java继承问题 70

我不明白为何结果是这样的继承要怎么看... 我不明白为何结果是这样的 继承要怎么看 展开
 我来答
来自云峰峡谷有实力的马尾松
2019-04-15 · TA获得超过541个赞
知道答主
回答量:1569
采纳率:15%
帮助的人:48.6万
展开全部
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
壬楠楠0Gl
2019-04-13 · TA获得超过3487个赞
知道大有可为答主
回答量:6156
采纳率:83%
帮助的人:634万
展开全部
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
追问
那请问为什么输出的结果是这样的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Le柠檬M
2019-04-14 · 超过13用户采纳过TA的回答
知道答主
回答量:116
采纳率:63%
帮助的人:20.3万
展开全部

看一下这两个图,更容易帮助你理解继承

追问
我主要是不知道这段代码的输出结果为什么是这样,请问能讲解一下吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友428ddb9
2019-04-16 · TA获得超过203个赞
知道小有建树答主
回答量:112
采纳率:90%
帮助的人:42.1万
展开全部
我看了一下前几楼的答案,都没有讲到关键的地方,这里涉及到的不仅仅是继承方面的知识,还有类型转换和重写重载。
要理解图中出现的结果,你要知道以下几点:
1、子类是可以自动转换成父类类型的
2、调用重载方法优先匹配参数类型,当没有参数类型匹配时,会进行自动类型转换再匹配,如果还匹配不到,则报错
3、子类重写父类方法时,调用的是子类中的方法
我逐句代码解释下:
a1.show(b):A类中并没有以B类型作为参数的方法,则会自动将B类转换成B类的父类A类,调用的是show(A obj),输出A and A
a1.show(c):同上,只是会进行两次类型转换,输出A and A
a1.show(d):A类中有以D类型作为参数的方法,直接调用,输出A and D
a2.show(b):A类中并没有以B类型作为参数的方法,则会自动将B类转换成B类的父类A类,但是这里要注意,a2的类型虽然是A类型,但是它是以子类B类为模板创建的,并且B类中对show(A obj)进行了重写,因此调用的是B类中的show(A obj),输出B and A
a2.show(c):同上,会进行两次类型转换,输出B and A
a2.show(d):A类中有以D类型作为参数的方法,直接调用,输出A and D
b.show(b):B类中有以B类型作为参数的方法,直接调用,输出B and B
b.show(c):B类中并没有以C类型作为参数的方法,则会自动将C类转换成C类的父类B类,调用的是show(B obj),输出B and B
b.show(d):B类中并没有以D类型作为参数的方法,但是B类的父类A类中有,所以调用的是A类中的show(D obj),输出A and D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pieryon
2019-04-15 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166864
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
A and A 是a1.show(b)打印出来的。
追问
请问a1不是A类的对象吗,A类中不是只有(A obj)和(D obj)的吗
追答
但是b是a的子类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式