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

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

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

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

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