動態方法綁定超類引用只能調用被它繼承和覆蓋的子類方法。但是,否則可以實施。超類對象可能引用未繼承的子類成員方法嗎?
abstract class in
{
abstract void print();
}
class a extends in
{
String name=this.getClass().getSimpleName();
void show()
{
System.out.println("class "+name);
}
void print()
{
show();
}
}
class Main
{
public static void main(String args[])
{
in x;
x = new a();
x.print();
}
}
這裏,成功打印
類
另外的getClass()作爲此返回子類名稱,而不是超類名的指的是超類對象中主要方法。
父母不知道孩子。一個類的開發者無法知道他們的類將如何被用戶擴展。 – duffymo
所有'in'知道它應該有一個名爲'print()'的方法。該方法的所有實現都發生在'a'內部,'a'完全知道'a'(就其類名和其他方法而言)。 – khelwood
所以你的意思是x.print()等價於新的a()。print()?但是不是x超類的參考? – ZEU5