首页 新闻 会员 周边

Java中子类继承父类关于成员变量的调用问题

0
悬赏园豆:5 [已解决问题] 解决于 2016-09-05 18:46

class Demo{
  public static void main(String[] args){
    Son s = new Son();
    s.show();
    System.out.println(Son.name);
  }
}
class Father {
  String name = "father";
  public void show(){
    System.out.println( name + " father测试~~~");
  }
}
class Son extends Father{
  String name = "son";
}

特别不理解,调用的时候为什么输出name的值为fater呢???继承不是this代表子类对象啊??求大神指导

Goorwl的主页 Goorwl | 初学一级 | 园豆:67
提问于:2016-08-31 21:31
< >
分享
最佳答案
0

假设父类 a=1 b=2 c=3

子类重写了 a=11 b=22

那么调用输出的时候

a=11 b=22 c=3    ?

------------

你子类只是给成员变量name赋值了。 成员函数 show方法没有重写。main调用show的时候是父类的show(),而父类show的是父类的name。你重写子类的 show方法试试,调用的就是子类的name了。

收获园豆:5
小刺猬001 | 小虾三级 |园豆:660 | 2016-09-01 10:20
其他回答(3)
0

不写public的时候是不是默认private?

吴瑞祥 | 园豆:29449 (高人七级) | 2016-08-31 21:34

不是啊~~~应该是调用机制在继承这块我有点晕~~~

支持(0) 反对(0) Goorwl | 园豆:67 (初学一级) | 2016-08-31 21:39

@Goorwl: @Goorwl: 你没有重写也没用new覆盖.所以父类中调用的父类.子类中调用的是子类.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-09-01 00:49
0

你调用的父类的方法,如果没有重写,父类会显示基类的字段直

悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-31 21:40
0

System.out.println(Son.name);你写的Son.name不是static的,不能直接同类名调用属性!

成长的小牛 | 园豆:206 (菜鸟二级) | 2016-09-01 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册