永发信息网

一段Java程序的问题

答案:4  悬赏:0  手机版
解决时间 2021-05-22 17:10

public class Base {
public String name;
public Base(){
name = "Base";
}

public Base(String pName){
name = pName;
}

public void method(){
System.out.println(name);
}
}

public class Child extends Base {
public Child(){
super("Child1");

name = "Child2";
}
}

public class Test {
public static void main(String[] args) {
Child c =new Child();
c.method();
}
}

这段程序中,测试类中实例化Child时,那个name和method方法,是调用的Child类中的,还是父类Base中的。如果是Child类中的,那么为什么父类中的name也变成了Child2 ?

请尽量详细。

最佳答案

由于Child类没有覆盖父类的方法,所以调用的是父类中的方法。而Child类继承了父类Base的公有成员字段name,直接name = "Child2";时,可以看成相当于替父类的name设置值,自然就输出了“Child2”。

全部回答
当子类继承父类时,子类就拥有父类的方法和属性.所以,当实列化子类调用的是父类的方法method(); 打印为:child2

先把name想象成一个指针,当你执行super("Child1");的时候,name指向了child1,然后你又把child2赋值给了name,他里面的值就改变了。

你可以在super("Child1");的后面加一个System.out.println()输出name的值,看一下他每步的变化就知道程序是怎么执行的了 。

Child类继承了Base类的name字段和method方法。所以都是调用父类Base的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
人的头上长虱子了怎吗办?
这次汶川地震后,今年我国是否还有可能发生大
美国末日好玩吗,求3部好看的末世求生电影,生
我是一个待毕业的专科,想自考
在直线l上依次摆放着七个正方形,
红盾服务维权六街居委会工作站地址在什么地方
QQ农场怎么挣钱快啊?
玩qq炫舞用什么显卡好500元以内?
爱你的语句英文的,故事至此告一段落用英语怎
摩羯座的男人都会被预言测定一生吗?
请评论以下论断:“世界上一些最贫穷的国家找
智能机中毒了那软件怎么删除啊
怎样联系心里学转家?
QQ音速的图标怎么点亮的啊
申通浙江到哈尔滨几天,申通快递从浙江到哈尔
推荐资讯
于家庄园极品大樱桃怎么去啊,有知道地址的么
求柯艾的小说几本
要怎么练运球
世人皆浊你独清,你说是你浊还是他们清呢
marry怎么变延续性动词
用飞少归来帮我做个网名
DNF50级剑圣刷那个图升级最好啊!高手指点一
一个王加一个易怎么念
怎样生产大晶体
地球什么时候毁灭啊?
村两委班子对村官评语,对村两委班子的评价成
不想要的书该怎么处理?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?