class A {
public void m() {
System.out.println("A.m");
}
public void n() {
System.out.println("A.n");
}
}
class B extends A {
@Override
public void n() {
System.out.println("B.n");
}
public void p() {
System.out.println("B.p");
}
}
class C extends A {
@Override
public void m() {
System.out.println("C.m");
}
}
class D extends C {
@Override
public void m() {
System.out.println("D.m");
}
@Override
public void n() {
System.out.println("D.n");
}
public void p() {
System.out.println("D.p");
}
}
public class Main {
public static void main(String[] args) {
A a = new D();
a.m();
}
}
当类 A 不是类 D 的直接超类时,为什么编译器不报告语句
A a = new D();
?
请有人向我解释一下对象类型和引用类型之间的区别。非常感谢。
D is_a C 且 C is_a A。因此,D 也是 is_a A。就这么简单。
由
extends
定义的子类是可传递的(使用 implements
实现的接口也适用于所有子类)。