下面这段代码为什么调用的B类中的run()方法,而不是A类中的run()方法?求解释。
public class DuoTaiDemo {
public static void main(String[] args) {
A a=new B();
a.show(); //这里调用的是A类中的show()方法。
a.run(); //这里为什么不是调用A类中的run()方法,而是调用了B类中的run()方法。
}
}
class A{
public void show(){
System.out.println("show A");
}
public void run(){
System.out.println("run A");
}
}
class B extends A{
public void run(){
System.out.println("run B");
}
我说一下毕老师讲那个,A和B就是爹和儿子继承关系,A a =new B()就相当于,儿子伪装程父亲,父亲能做的事情事情。私有除外。儿子现在都能做,父亲有个功能是授课--父类中的run(),是教数学的,儿子也有个功能是授课,是教JAVA的--子类中的run(),儿子伪装成父亲去讲课---a.run() ,儿子不懂数学,他只能讲java。所以a.run()调用的是子类的run()方法。