我正在學習java。我對繼承有懷疑。當一個子類擴展父類並且父類有一個引用在父類中聲明的實例變量的方法時。但是子類類型的dint覆蓋了這個方法,並且聲明瞭與父類名稱相同的實例變量。在這種情況下,將引用子進程的實例變量或引用父進程。下面的代碼片段Java繼承覆蓋實例變量
class parent {
int a;
parent() {
System.out.println("in parent");
a = 10;
}
void method() {
System.out.println(a);
}
}
class child extends parent {
int a;
child() {
System.out.println("in child");
a = 11;
}
}
public class Test {
public static void main(String args[]) throws IOException {
parent p1 = new child();
p1.method();
}
}
我得到的輸出是
在父母
兒童
可有人請讓我明白爲什麼它指父類的實例變量a
和不是孩子班的a
。
另一個疑問是,我明白隱藏方法,當父類和子類中存在靜態方法時,也聲明瞭具有相同簽名的靜態方法。這裏隱藏手段?什麼方法隱藏?如果它的父母方法可以請你解釋一下嗎?
在此先感謝。
你確定你的代碼編譯了嗎?你運行你的代碼? – 2013-02-18 10:00:14
這不應該編譯,父母沒有方法'方法()' – 2013-02-18 10:02:01
抱歉,格式錯誤。現在更新了代碼。 – Mojoy 2013-02-18 10:04:40