java 類的繼承體系

2021-07-09 11:42:11 字數 793 閱讀 3735

詳細描述見:

1、原因1

雖然抽象類b implements c.但是,有可能b中的並沒有真正實現c介面中的方法--因為b是抽象類,抽象類可以不實現介面中的方法,而是直接用 abstract 修飾。如 abstract void method();

那麼,由於a extends b, 而 a不是抽象類,那麼a就得完全實現 method()方法了。

評價:我覺得這個原因是靠譜的,而且應該是唯一的原因。

我看了一下原始碼,abstractmap抽象類確實沒有實現map介面所有的方法(比如:public abstract set> entryset();)。

2、原因2

假設……僅僅是假設……下面所說這種情況極難發生,但並不排除其可能性

因為框架需要,

abstractlist 不再實現 list 介面,而是實現 newlist 介面,這個時候 arraylist 仍然要實現 list 介面,而且需要從 abstractlist 繼承以實現復用

……現在發揮你的相像力……

這在相對成熟的 jdk 中幾乎不會發生,但難免你自己寫的**裡可能會發生這種事情。而 jdk 自己的**,就是乙個設計模式和開發的典範,所以……

參考:評價:這個勉強可以作為這樣設計的乙個原因。

雖然從類的設計上來說,最好是這麼做。但是,如果真的這麼做的話,**是不是看著也很累啊,一大堆重複的東西。真是充滿矛盾。

3、原因3

看起來一目了然,就知道hashmap實現了map。

評價:這個就有點扯了。

除非是出現原因1裡面的情況,否則沒有必要這麼做。

java 繼承體系物件的構造過程

先說一下普通物件的構造過程 比如下面 public class hello 1 初始化objec的靜態變數,然後呼叫objec的靜態初始化塊 2 初始化hello的靜態變數,然後呼叫hello的靜態初始化塊 3 初始化object的例項變數,和例項 4 呼叫object的無參建構函式 5 初始化he...

Java基礎 類的繼承

父類 public class student 學生的行為方法 public void study 子類 public class unstudent子類的物件可以使用父類的方法 父類的物件不可使用子類的方法 public static void main string args 自動 向上 stu...

JAVA 類的繼承(1)

10.19 使用類繼承時 1.子類中有和父類相同的成員變數,則會隱藏父類成員變數 2.子類中有和父類同名 同型別 同引數的方法,則會覆蓋父類中的方法 3.子類物件可以賦值給父類物件 父類person class person void describle 子類son public class son...