2011-11-23 50 views
2

當我們說「所有課程直接或間接從課堂Object繼承」時,我們的意思是什麼?什麼構成間接繼承其間接超類中聲明的方法的類?什麼構成間接繼承?

我們可以說,一個類間接繼承了在它的一個間接超類中聲明的方法,而不管超類中定義的方法在向下傳遞給繼承層次結構時可能被覆蓋,因此上面的註釋是基於子類繼承某些方法,並且具有與超類中聲明的簽名相同的簽名。

或者,我們是否可以只說間接繼承了它的一個間接超類中聲明的方法?當且僅當該類繼承了在它的間接超類中聲明的方法,即該方法並未被覆蓋,而同時向下傳播繼承層次結構,並且該類繼承了與其間接超類中定義的實現相同的實現方法。

回答

10

通過間接繼承,它們意味着你擴展了另一個本身擴展Object的類。從Object直接繼承將意味着你要麼明確你的類簽名表示extends Object,或者你沒有定義另一個類,應該延長(在這種情況下,它通過定義擴展Object直接反正。)

在具體的方法上,您只能繼承層次結構中「最後覆蓋」的那個。所以如果我從繼承toString()的類繼承,我將只繼承覆蓋版本,而不是從Object開始的原始版本。

+0

謝謝,我明白你說的,但我的問題是關於評論「所有類直接或間接從類Object繼承「是正確的。 –

+0

@helloRichie它總是正確的,無論在繼續沿用任何類還是從Object繼承的方法中覆蓋了哪些方法,因爲它仍然可以看作是Object。 – berry120

1

Class1當您多次使用"is-a"來描述它們之間的關係時(請記住"is-a"關係是可傳遞的),間接繼承Class2

示例:a red-apple is-a apple is-a fruit is-a consumable。在這個例子中,red-apple間接地從fruitconsumable繼承。 red-apple直接繼承自apple(僅使用一個is-a轉換)

1

關於間接繼承類的問題已經得到解答。所以我補充一些方法。

我認爲這裏重要的是類接口(可用方法的簽名,而不是接口的java機制)和類行爲之間的區別 - 可用方法的實現。在你關於方法的問題中,你可以說這個類間接地繼承了方法,而不管它們是否被中間類覆蓋,並且沒有任何其他細節,這意味着繼承接口。要將短語的上下文設置爲行爲意味着您必須明確指出方法X的實現取自Y類。