谁能详细解释一下下面这段代码,小弟不胜感激Class B{
void method()
{…};
}
Class A extends B {
void method()
{…};
}
B b = new A();
b.method();
void method()
{…};
}
Class A extends B {
void method()
{…};
}
B b = new A();
b.method();
A类则继承了B类,然后也继承了method()方法,这里也有可能重写了该方法然后使用B类的子类来声明B类变量
最后执行变量b包含的mehtod方法,也就是A类中写的方法
这里可以说,使用的是B中方法的名字,但是实际执行的却是A中继承的方法名中的代码,好像有点绕~~这是面向对象的基本知识
调用的实际上是Class A中的method,而不是B中的
调用的就是谁的方法
这和动态绑定有关吧,换句话说,如果方法是final的,那就会调用B的方法了
就是A中的method()方法