JAVA访问父类的成员变量或调用父类的方法 为什么输出是这顺序 ,怎么调用的?

classsuperClass{inty;superClass(){y=30;System.out.println("insuperClass:y="+y);}voidd... class superClass {
int y;
superClass( ) {
y=30;
System.out.println("in superClass:y="+y);
}
void doPrint(){
System.out.println("In superClass.doPrint()");
}
}

class subClass extends superClass{
int y;
subClass( ){
super(); //call constructor of superClass
y=50;
System.out.println("in subClass:y="+y);
}
void doPrint( ){
super.doPrint(); // call method of superClass
System.out.println("in subClass.doPrint()");
System.out.println("super.y="+super.y+" sub.y="+y);
}
}

public class inviteSuper{
public static void main(String args[]){
subClass subSC=new subClass();
subSC.doPrint( );
}
}
输出
in superClass:y=30
in subClass:y=50
In superClass.doPrint()
in subClass.doPrint()
super.y=30 sub.y=50
展开
 我来答
popantx5CgP
2011-01-17 · TA获得超过176个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:115万
展开全部
你的理解稍微有些偏差,
在输出的内容中 前两行,也就是
in superClass:y=30
in subClass:y=50
这两行,是 subClass subSC=new subClass();
这个语句打印的。
在new一个对象的时候,首先会先初始化父类变量,父类无参构造方法,再初始化子类变量,子类构造方法。 所以, subClass subSC=new subClass();这个语句就先调用了父类的构造方法,再调用了子类的构造方法。所以,就会有这样的输出的结果了
而当你在main方法中调用subSC.doPrint( );的时候,才会先调用父类的doPoint再调用子类的doPoint
多看写基础的书,以后才能走的比较轻松一些~ 加油~~

参考资料: 手打

0835atzzsy
2011-01-17 · TA获得超过114个赞
知道答主
回答量:134
采纳率:0%
帮助的人:92.9万
展开全部
1. new 为对象开辟内存
2.调用构造函数,调用子类先调用父类 所以调用super()//这个super有写没写都会调用
运行superClass( ) 输出 in superClass:y=30
3.父类的构造函数运行完了,运行子类的构造函数
运行 subClass( ) 输出 in subClass:y=50

4. 你调用子类的doPrint()函数,子类的doPrint函数调用父类的doPrint()
运行 super.doPrint(); 输出 In superClass.doPrint()
5 super.doPrint(); 运行完毕 继续下一行代码 System.out.println("in subClass.doPrint()");
自然输出 "in subClass.doPrint()
6 输出 super.y=30 sub.y=50
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式