老师求解:按我的思路怎样分成父类转子类和子类写

根据Java中子类重写父类方法的两小一大原则,为何下面这道题选选A不选B?_百度知道
根据Java中子类重写父类方法的两小一大原则,为何下面这道题选选A不选B?
class A { protected int method (int a。 A.private int method(int a, int b) { return 0; } }
下列选项中,可以在 A 的子类中使用的是(), long b) { return 0; } B.public short method(int a, int b) { return 0(多选)查看如下代码
我有更好的答案
重写是参数列表返回类型不能变,访问权限可以更加宽松,但绝不能更严格。这样子好像没答案……
A 是重载,问题是为什么B不构成重写?访问条件变成了public,没错。返回值类型从int 变成short为何不符合两小原则呢?
那个两小一大中关于返回值要小 是指要不和父类返回值相同,要不是父类返回值的子类类型对于基础数据类型(没有所谓父类子类),父类子类的返回值必须相同
明白了,谢谢
采纳率:58%
重写,就是选A啊,你去复习一下重写跟重载的区别吧
题目截取错了,A是重载,我知道。问题是B为什么不符合重写呢?子类重写父类返回值类型小于等于父类,不对么
重写是返回类型一样和访问权限不小于父类吧,你搞错了吧,a应该是重写吧。a完全一样不构成重载
哥哥,重写参数列表是一样的好么
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。子类和父类的转换!谢谢!_百度知道
子类和父类的转换!谢谢!
int name=3;
int area(){
System.out.println(&A&);
class C extends A{
int name=4;
System.out.println(&C类方法&);
return 1;}
public static void main(String[]args){
A a = new C();
的子类和父类的转换
我有更好的答案
但是这个指针却是没法去访问该方法的这是java多态性的表现,其指向的内存块的内容一定要大于等于子类,但是指针类型是父类的,它能指向的内存块是父类应能对应的内容.name=3这个问题,这是由于直接访问成员变量的话 指针指向的任然是父类成员变量,这点记住就行;此时把a强制转换为子类是正确的而A a = new A(), 所以出现无法访问的情况。然后是a。当你把A类得Area()方法删除时,要深入理解的话得从内存方面去思考,创建的是子类对象,把name设为private,这样才符合面向对象封装特性,你可以试一下.getName()的结果肯定是4另外父类转化为子类的问题,父类转化为子类不是一定可行的。)比如,a指向的内存块里没有Area方法,或者说它指向的这个对象虽然有这个方法,实际中一般都设getName()、setName()方法进行访问和设置,a,父类要想转化为子类。。,(即指向对象一定要是子类或者子类的子类:A a = new C()
另外我想问下,在父类有一个抽象方法。public abstract double calcArea();然后我在子类重写他,public float calcArea(){}为什么这样也可以?不是说你重写一个方法,返回值必须要一模一样吗,为什么呢?难道说仅仅只是抽象的可以?那我声明普通 double calcArea(){},重写的时候可以float calcArea(){} 吗?
采纳率:39%
类实体永远不可能转换成子类引用成功,也可以用子类本身类型引用。父类实体只能用本身类型引用,除非该父类又是另一个类的子类。子类实体可以用父类类型引用,功能多的转换为功能少的可以,但是功能少的要转换为功能多的那是不可能的,因为它根本不具备某些方法。父类引用的实体本身是子类实例时能转换为子类引用。子类拥有比父类多的功能
当你使用A a = new C();的时候其实你声明的是一个A类只是你使用了C类去实体化他。那么A类在这里就有点像接口。你在C类中你重载了area()方法。所以你调用a.area()时就是C类中的内容。但是你的A类中的name属性你没有提供get和set方法并且int name = 3;这种方法将会使其默认为私有方式保存。虽然你在C类中使用了同样的声明int name = 4;但是虽然这两个属性其属性名相同但是他们指向不同的地址。事实上说是不同的变量。当你使用A.name调用属性时,由于声明时你声明的是A类那么它自然访问A类中的name属性。当你使用C c = new C();的时候其实你声明的是一个C类你又使用了C类去实体化他。那么当你使用c.name时你访问的自然就是C类中的name属性了。还有当你把A类中的area()方法删去但是A类中保留时。如果你使用如下的声明方式:A a = new C();那么你声明了一个A类而且你使用C类去实体化他。因为A类中没有area()方法所以C类中的area()方法不会去实体化到这个声明中去(这有点像接口,你实例化接口也是一样的)。所以你调用a.area()自然会报错。因为A类没有这个方法。哪怕C类有这个方法你用C类去实体化也不会实体化这个方法的。
我说说的理解,不对别见怪哈。首先A a = new C();这条语句利用了java中的多态特性,即子类对象可以当做父类对象来看。但是,若我们把子类对象当做父类对象来看是,那么就只能访问父类已有定义的属性和方法,不能访问子类扩展的属性和方法。要是子类把父类的方法覆盖了,再把子类对象的当做父类对象来看,去调用方法,调用的是覆盖后的方法(子类中定义的方法)。还有就是关于name=3的问题。要记住java中只有在普通的方法中才能表现出多态特性,变量是没有多态存在的,所以是不会输出name = 4.至于类的转换:引用类型转换(是引用变量的类型的转换!) 1 向下转型(自动类型转换),是小类型到大类型的转换
Circle c = new Circle(1,2,3);
Shape s =//表示圆一定是图形 2 向上造型(强制类型转换),是大类型到小类型。
Shape s = new Circle(1,2,3);
Cirlcle c = (Circle)s; //当s实际引用圆时候,能够转换成功
s = new Rectangle(1,1,2,2);
Circle c2 = (Circle)//出现类型转换异常,因为
// s引用的是Rectangle 不是圆实例。 3 instanceof 运算符,用来检查引用对象的类型。
经常与“引用类型强制转换”配合,实现安全的类型换,
避免类型转换异常。如你例子中的就是向下转型,也就是多态,若果要父类转成子类,就是向上转型,这要 承担出异常的后果,所以转换前要用instanceof判断该父类是否是子类的实例才可。这些都是我以前的一些笔记,希望能对你有点帮助。
C c = new A();A a = (A)c;这样就可以了,其它的还没细看,看完了,再补充
我认为是你没加修饰符的原因。没加的话默认是freind。关于强制转换,就是接口和父子类这些的句柄处理。这些在课本上有动手练练就熟了。这个问题提的很好,动手能力也很强啊!赞一个。
其他4条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。A045方法的覆盖_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
A045方法的覆盖
猿圈是一个技术人才服务平台,应聘者在平台...|
总评分0.0|
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
Java问题求解判断:
(1)子类是父类的一个子集。
(2)当从子类调用构造方法时,它的父类的无参数构造方法也常常被调用。
(3)可以在子类覆盖定义在父类中额私有方法。
(4)可以在子类覆盖定义在父类中的静态方法。
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
都是错的,1、父类是子类的子集2、子类继承父类,必须在子类的构造函数中调用父类的构造函数,如果子类得构造函数中,没有显示的调用,那么会自动调用父类的无参数构造函数,如果父类没有无参数构造函数,那么子类中必须显示的调用父类的构造函数。3、private关键字的定义是“除了包含该成员的类之外,其他任何类都无法访问这个成员.”,也就是说只有自己才能直接访问到private成员,其他任何类,包括子类都无法访问到这个成员。4、’静态方法不能重写,但可以在子类中定义相同的静态方法将父类的方法隐藏
为您推荐:
扫描下载二维码java父类子类定义_百度知道
java父类子类定义
定义一个包含5个成员变量、5个成员方法的父类,再为其定义两个子类,分别用完全继承、部分继承、完全覆盖、子类独有等方式实现7个子方法。每一个成员变量、成员方法、子方法都注释一下要么我看不懂。谢谢了!我自己看了半天书百度了半天实在是不会。求助各位大...
我有更好的答案
这老师什么情况,Java啥时候出现部分继承了???就算是父类的私有方法子类依然可以继承只是无法调用罢了
确定。我们老师说的。你帮我做一下吧。就算只有父类和成员变量成员方法也可以啊。。。
public abstract class father{
//成员变量
//成员 方法}public classs son extends father{
//完全覆盖,子类重写全部继承自父类的的方法,快捷键shift+alt+s,选择
overridr/implement... 点击你想重写的方法就可以了}
我把成员变量写成int age。这就是两个成员变量了吧?然后我把成员方法写成weight *weight + age。这就是两个方法了吧?
方法是个概念,你可以定义一个方法,public void eat(){
System.out.println(&吃东西&);}
采纳率:46%
你确定java有完全继承和部分继承两种情况?????
我也不清楚。老师布置的作业是这样的
我也坐等大神来回答,看看什么叫完全继承,什么叫部分继承
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 父类转子类 的文章

 

随机推荐