2015-05-21 107 views
-3

一個子類也可以是Java中另一個子類的超類嗎?也許這不是最好的例子,但考慮以下類:子類是否也可以是超類?

public class Animal { } 
public class Dog extends Animal { } 
public class Cat extends Animal { } 
public class Siamese extends Cat { } 
public class JackRussel extends Dog { } 

繼承是否允許這種行爲?

鑑於傑克魯塞爾需要動物和狗的方法和屬性,並且連體動物需要動物和貓的方法和屬性。

如果沒有,我是否可以採取一種通用的方法來實現這種行爲?

乾杯

+0

在這種情況下,語言是Java。我認爲這個問題是相當不可知的。我會編輯它。 – anditpainsme

+7

是的,Java允許這樣做。你爲什麼不爲自己嘗試一下? –

+0

是的,考慮'哺乳動物'作爲一個超級類的狗,但一個子類到'生活' –

回答

1

是的,這種行爲正是在Java中使用繼承時所期望的。 下面是一些快速閱讀,您可能會發現有用:http://www.homeandlearn.co.uk/java/java_inheritance.html

你JackRussel對象將繼承所有字段和方法,從它的動物和狗的超類,分別是:

  • 沒有宣佈私有的;
  • 不會被覆蓋(在這種情況下將只能訪問重寫的之一);
  • 沒有被遮蔽(在這種情況下將只能訪問被遮擋的之一);

以下是一個Java的陰影和壓倒一切的另一個快速鏈接: http://docstore.mik.ua/orelly/java-ent/jnut/ch03_04.htm

銘記那些時候,你可以很容易地設計繼承樹,可以傳播父母的行爲和狀態,所有的孩子。

謝謝。

+0

感謝,對人新的OOP概念非常有見地的。 – anditpainsme

0

當然這是可能的。但是說暹羅會要求兩個超類的方法和領域有點不對。當貓擴展動物時,它會獲得動物的所有領域和方法(如果你不覆蓋它們)。然後,當連體擴展這個cat類時,它將自動獲得整個Cat類,包括來自Animal類的東西,而不管它們是否被覆蓋。

簡而言之,這是可能的。

相關問題