这个例子挺有意思的A b = new B(); b.doo();不管怎样,通过b这个对象调用了方法,最终调用了被子类覆盖的方法m,它就会选择动态绑定,执行B类中的方法m
这是一个向上转型,动态链接的例子,子类的对象赋给一个父类的引用。 A a = new B();这是一个A类的引用,所以 a拥有A类的变量和方法。但是对应的是一个B对象,所以它的方法会被重写,但是变量是不能被重写的 所以假如B重写了A中的方法,将调用B的方法,这就是动态绑定或者叫动态链接。 例子里B只重写了m()方法 ,b.doo()调用A类的doo方法,调用a类的test, 涉及到m()时 除非显式的调用父类方法(super.m()),否则调用B的m()。 所以是B m() 重写和重载是不同的哦
b.doo();不管怎样,通过b这个对象调用了方法,最终调用了被子类覆盖的方法m,它就会选择动态绑定,执行B类中的方法m
A a = new B();这是一个A类的引用,所以
a拥有A类的变量和方法。但是对应的是一个B对象,所以它的方法会被重写,但是变量是不能被重写的
所以假如B重写了A中的方法,将调用B的方法,这就是动态绑定或者叫动态链接。
例子里B只重写了m()方法 ,b.doo()调用A类的doo方法,调用a类的test,
涉及到m()时 除非显式的调用父类方法(super.m()),否则调用B的m()。
所以是B m()
重写和重载是不同的哦