JAVA中继承的问题

如果有多个继承关系,比如说B继承A,C继承B,这时在构造一个C的子类构造一个对象,调用super()方法,是调用的第一个还是上一个父类的方法?还有下面这个程序为什么会输出... 如果有多个继承关系,比如说B继承A ,C 继承B ,这时在构造一个C的子类构造一个对象,调用super()方法,是调用的第一个还是上一个父类的方法?还有下面这个程序为什么会输出class A呢?
class A{
A(){
System.out.println("class A");
}
}

class B extends A{
int b;
B(int i){b=i;}
}

class C extends B{
private int c;
C(int i,int j){
super(j);
c=i;
}
int returnc(){
return c;
}
}
public class EX1 {
public static void main(String[] args) {
C c=new C(5,18);
System.out.println("c"+c.b*c.returnc());
}
}
展开
 我来答
zhou073
2013-06-25 · TA获得超过134个赞
知道小有建树答主
回答量:191
采纳率:80%
帮助的人:63万
展开全部
1,类初始化一个实例的时候,会自动调用父类的构造方法,如果父类还有父类,一直会往上调用父类的构造方法,所以输出class A不难理解了

2,一个类,只能有一个直接父类,super()调用的是父类的方法,而不是调用父类的父类的方法(这点你可以通过父类重写父类的父类方法来验证)

还有一点要注意,构造方法不能被继承,所以上面的验证你别用构造方法,用普通方法
mxh快乐
2013-06-25 · TA获得超过366个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:106万
展开全部
当初始化一个c的实例的时候,会调用B的构造器,这是又会调用A的构造器。
如果不给一个类明确写出一个构造方法,他们都有一个不带参的构造方法,就像A中的一样。
所以你不妨在类B 和 C中也同样加入 不带参的构造方法.看看构造方法是怎样按照继承层次逐渐向上调用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小圣12345
2013-06-25 · TA获得超过820个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:155万
展开全部
super() 调用父类的无参构造方法.一个类只能继承另一个类(可实现多个接口).所以一个类只能有一个父类.多个类嵌套,应该是调用他爹的,然后他爹调用他爷爷的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式