我们所谓的复写,在内存中真的是子类把父类的方法覆盖了,内存中就没有父类汇总方法了吗?
我的看法是,不是这样的,例如Zi extends Fu,new Zi()创建子类对象时,子类和父类都加载进内存,在方法区中,是两块不同的空间,并且会在堆内存中有父类和子类的内存区域,所以才会super引用可以调用Fu中的方法,虽然并没有创建Fu的对象。
代码:- class Test
- {
- public static void main(String[] args)
- {
- Zi z = new Zi();
- z.getNum();
- Fu f = new Zi();
- f.getNum();
- }
- }
- class Fu
- {
- int num = 2;
- void getNum(){
- System.out.println("Fu num == "+num);
- }
- }
- class Zi extends Fu
- {
- int num = 4;
- void getNum(){
- System.out.println("Zi num == "+num);
- super.getNum();
- }
- }
复制代码 大家的看法如何。
|
|