前面对继承的理解常常用到了这么一用表述:Base的代码会被复制到Ext中。其实这么理解欠妥,看代码:
class Base
{
private String inf = "Here is Base";
public String getInf()
{
return inf;
}
}
class Ext extends Base
{
public static void main(String[] args)
{
Ext e = new Ext();
System.out.println(e.getInf());
}
}
很明显,Base的private String inf是不能被继承的,所以就算getInf()的代码被复制到Ext中,Ext也是无法调用的getInf()的(Ext中没有inf)。所以e.getInf()其实隐藏了e的向上转型。
所以我们至多只能说getInf()被复制到Ext的方法列表里。当然,“复制说”还是很形象的,有助理解,细节方面自己知道就好。