我对Java中的继承有疑问,我无法理解:
我有这两个班:
public class C
{
public void foo(D d)
{
System.out.println("cd");
}
}
public class D extends C
{
public void foo(C c)
{
System.out.println("dc");
}
public void foo(D d)
{
System.out.println("dd");
}
}
Run Code Online (Sandbox Code Playgroud)
主要:
public static void main(String[] args)
{
C cd = new D();
D dd = (D)cd;
}
Run Code Online (Sandbox Code Playgroud)
什么是每一个的类型cd
和dd
为什么?
这里涉及两种不同的类型:
变量的类型独立于它当前恰好引用的对象的类型 - 反之亦然,对象的类型不依赖于访问它的变量的类型.因此,当您将对象分配给另一个不同的另一个变量时,其类型不会受到影响.
所以,
cd
是C
;D
.