[英]Call subclass method from a superclass method?
我的應用程序的結構類似於:
class Father{
a(){ ... }
b(){a();}
}
class Son extends Father{
a(){ ..... }} //override
b() 未被覆蓋。 當我創建 Son 的實例並調用 b() 時,會調用父親的 a(),但我希望它執行 Son 實例(如果 object 是 Son)。 可能嗎?
否/是
如果a
不是 static 方法,那么 java 使用動態綁定,所以調用了兒子的a()
方法。
new Son().b()
將調用 Son 中的方法a()
。 這稱為動態綁定。
兒子的a
方法應該被調用。 如果不是,那么您要么沒有在Son
的實例上進行操作,要么您沒有正確覆蓋該方法。 如果簽名不完全相同,則可能會發生這種情況。 我會仔細檢查您的實現簽名是否完全相同。 另外,嘗試在 a 的Son
實現上方拋出a
@Override
並查看是否出現編譯錯誤。 如果你這樣做了,那么你就沒有正確地覆蓋該方法。
像這樣
class Son extends Father{
@Override
a(){ ...}
}
此外, a
必須是受保護的或公有的(包私有,默認情況下,僅當Father
和Son
在同一個包中時才有效)。 即Son
必須能夠“看到” a()
方法。
你所擁有的應該是正確的。 方法調用是惰性綁定的。 這意味着當您在Son
object 中的任何位置調用方法a()
時,將調用Son
的方法。
重載的方法在運行時解析,而重載的方法在編譯時解析。 因此,只需調用 new Son().a() 就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.