永发信息网

一段Java程序的问题

答案:4  悬赏:0  手机版
解决时间 2021-05-22 17:10
  • 提问者网友:你给我的爱
  • 2021-05-21 21:50

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 ?

请尽量详细。

最佳答案
  • 五星知识达人网友:人類模型
  • 2021-05-21 22:19

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

全部回答
  • 1楼网友:行雁书
  • 2021-05-22 01:03
当子类继承父类时,子类就拥有父类的方法和属性.所以,当实列化子类调用的是父类的方法method(); 打印为:child2
  • 2楼网友:想偏头吻你
  • 2021-05-22 00:30

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

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

  • 3楼网友:山有枢
  • 2021-05-21 23:51
Child类继承了Base类的name字段和method方法。所以都是调用父类Base的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯