三个类:
abstract class A;
abstract class B extends A;
class C extends B;A a1 = new C ();
为什么 a1 不能调用 class b 里的方法呢?只能调用 A里的方法,不甚明白。
abstract class A;
abstract class B extends A;
class C extends B;A a1 = new C ();
为什么 a1 不能调用 class b 里的方法呢?只能调用 A里的方法,不甚明白。
为什么A能调用B里的方法?
比如
abstract class 生物 {
abstract 新城代谢();
}
abstract class 动物 extends 生物{
abstract 跑();
}class 人 {
新城代谢(){}
跑(){};
}生物 x = new 人();
x.跑(); ///这怎么可能?//除非downcast
(动物)x.跑();
//或者
(人)x.跑();
public void deal(){
System.out.println("oh A");
}
}abstract class B extends A {
public void deal(){
System.out.println("oh B");
}
}public class Test extends B {
public static void main(String[] args) {
A a1 = new Test();
a1.deal();
}
}result:
oh B
在编译的时候,A决定了你能调用的方法
在运行时,调用的方法会是C里面的方法,如果Override了的话。这就是编译期和运行期的区别!