2 回答

TA貢獻1775條經(jīng)驗 獲得超8個贊
類(靜態(tài))方法不會被重寫為實例方法。當您調(diào)用方法“hello()”時,它將使用父方法。當您在此處引用類方法時,您指的是在“Parent”類中定義的方法。
除此之外,您應(yīng)該將您的 Child 實例聲明為“Parent c = new Child()”。因為您不是向子類添加新方法而是更改實現(xiàn),所以您不會失去對子類方法的訪問權(quán)。如果您必須使用返回 Parent 對象的方法,但您返回的是像您一樣聲明的 Child 對象,則會遇到問題。
編輯:除此之外,通常有兩個使用繼承的原因:專業(yè)化和擴展。
對于專業(yè)化,您使用在超類中定義方法,而您的子類在實現(xiàn)這些方法的方式上有所不同。例如,具有子類 Cat 和 Dog 的超類 Animal。“動物”有一個方法makeSound()
。您可以想象這兩個子類將有不同的實現(xiàn)。
對于擴展,您使用超類作為包含所有重疊內(nèi)容的基類。除此之外,子類可能有非常不同的實現(xiàn)和用途。很多接口都有這種用途。

TA貢獻1777條經(jīng)驗 獲得超10個贊
每當我們調(diào)用子類的對象時,它總是首先找到父類并執(zhí)行它。由于您在兩個類中都有靜態(tài) classMethod,因此它始終運行父級的 classMethod 而不是子級的。您只能通過覆蓋它來獲得所需的答案。
如果你將 hello() 方法設(shè)為靜態(tài),那么它也會給你相同的輸出。
添加回答
舉報