我也来说说。。。。- class Fu
- {
- public void show(){
- System.out.println("show fu");
- }
- }
- class Zi extends Fu
- {
- public void show()
- {
- System.out.println("show zi");
- }
- public static void main(String[] args)
- {
- Fu f = new Zi();
- f.show();
- }
- }
复制代码 看上面这个小代码和图片:
在main方法中,我创建了一个Fu类的引用f,这个f存放在,栈内存中的main方法片区里面
当new Zi();一执行,就会在堆内存中创建一个Zi类对象。f这个引用就会指向堆内存中新new出来的那个对象(也就是说那个对象在堆内存中的地址会存放在f中)。
等我们调用f的时候,其实这个f指向的是堆内存中存在的Zi类对象,因此调用的方法也是Zi类对象里面的show方法。如果我在Zi类方法中再定义一个父类没有的方法,那么f这个引用就不能调用那个方法了。 |
|