已有101人关注
尊敬的明日科技的老师
发表在Java图书答疑 2012-05-21
是否精华
版块置顶:
尊敬的明日科技的老师:
您好,有两段代码:package com;

public class Father {
private String name = "FATHER";

public Father() {
whoAmI();
tellName(name);
}

public void whoAmI() {
System.out.println("Father says, I am " + name);
}

public void tellName(String name) {
System.out.println("Father's name is " + name);
}
public static void main(String[] args) {
Father f=new Father();

}
}
public class Son extends Father {
private String name = "SON";

public Son() {
whoAmI();
tellName(name);
}

public void whoAmI() {
System.out.println("Son says, I am " + name);
}

public void tellName(String name) {
System.out.println("Son's name is " + name);
}
public static void main(String[] args) {
Son s=new Son();
}
}
运行后,Son这个类的前两个输出为何为Son says, I am null和Son's name is Father?为何一个是null,一个是Father?
打扰了,谢谢。
分享到:
精彩评论 1
无语_mrkj
学分:3155 LV11
2012-05-21
沙发
这是因为,在继承类的情况下, 先执行父类的构造方法,然后再执行子类的的构造方法和成员变量的代码。
在执行父类的构造方法时,由于子类whoAmI()方法中,要调用的name变量还没有值,而在主类中,也没传递这个变量,所以会输出null,而在执行第二个方法tellName()时,name的值是从父类中的传递过来,所有这里name的值为Father。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照