qq_23908539
2015-08-04 01:29
采纳率: 87.5%
浏览 1.5k
已采纳

JAVA中有关类的一个基础问题

父类Father和子类Son,父类中有一个方法A,在子类中也定义了一模一样的一个方法A(具有与老方法相同的方法签名),那么在子类中那个A自然会把父类中的A给覆盖了。通过子类的对象调用方法A的时候,自然执行的是子类的A,通过父类的对象调用A的时候,自然执行的是父类的A,那么问题是:如果父类中有一个成员变量是子类Son,那么在父类中通过调用这个私有对象变量的方法A的时候, 是子类的A,还是父类的A?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • AmazingZ 2015-08-04 02:40
    已采纳

    这么给你说吧,假如你实例化son,jvm会根据继承关系先调用父类构造函数,但是在调用所有构造函数之前会将每个类的对象初始化(不是你赋值时的初始化)成二进制的0
    ,所以父类任然会调用子类的方法,但是结果完全不可预料,所以强烈建议不要这样写。

    点赞 评论
  • danielinbiti 2015-08-04 01:47

    调用父类还是子类,与子类是不是成员变量没有关系。类的成员变量也需要实例化的,关键看实例是子类还是父类。如果是子类,就调用子类的方法A,如果是父类,就调用父类的方法A,这里显示还是调用子类的A

    点赞 评论
  • wanwanjiuhao 2015-08-05 15:09

    如果父类子类都实现了方法签名一样的方法,那么就是方法的重写,重写看的是对象,调用的是那个类的对象,就使用哪个类的方法

    点赞 评论

相关推荐 更多相似问题