JAVA上传型对象?
class A{
public void run(){}
}
class B extends A{
public void run(){
System.out.println("go,go,go");
}
}
public static void main(String args[]){
A a = new B();
a.run(); //为什么调用B的run方法
}
给讲一下原理可以吗?谢谢
----------------解决方案--------------------------------------------------------
动态绑定
----------------解决方案--------------------------------------------------------
是的啊,我知道是动态绑定的
但只是知道这样用
不知道它的原理
楼上这位朋友可以给分析一下它的原理吗.谢谢
----------------解决方案--------------------------------------------------------
动态绑定就是运行时绑定,因为a是用类B来创建的,所以给a开辟的地址空间是B对象的地址空间大小,也就是说对象a其实是类B的对象.而在B中的run()方法覆盖了A中的run()方法,所以a.run()就是调用类B的 run ()方法.
我是这么理解的.
----------------解决方案--------------------------------------------------------
上传型对象 继承或重写父类的方法
----------------解决方案--------------------------------------------------------