抽象類和介面的學習比較心得

2021-06-27 19:15:26 字數 1137 閱讀 2629

abstract class

1.abstract class 是介於一般類和介面之間的中庸之道

2.如果乙個類中包含乙個或者更多的抽象方法,那麼這個類一定要宣告成abstract,否則編譯器就會報錯

3.不能建立乙個abstract 類的物件,即使這個抽象類中沒有乙個抽象方法

4.在乙個子類繼承自乙個抽象類的情況下,如果想建立這個新類的物件,那麼這個新的子類就要實現該抽象類中的所有abstract方法;否則該子類也必須是由abstract關鍵字修飾的抽象類

5.乙個abstract 類也可以不包含任何abstract方法;在你有乙個類但是沒有必要擁有抽象方法,並且你想阻止產生這個類的任何例項時很有用

inte***ce

1.inte***ce是比abstract概念更純粹的抽象,在介面中一丁點實現也沒有;介面允許建立者決定方法名、引數列表、返回值型別但是沒有方法體 

2.inte***ce中的方法定義不需要加訪問許可權修飾符,因為不管你加不加public關鍵字,inte***ce中方法的定義都預設是也必須是public的;不管你加不加abstract關鍵字,inte***ce中的方法定義都是預設是也必須是abstract的,這點很有用!

3.inte***ce 中的域值的修飾符預設是也必須是public static final的,所以例如在inte***ce中定義string name="zhang";即使沒有修飾符public static final修飾那麼name也是public static final的;

4.衍生類如果繼承自非介面的類,那麼只能繼承乙個類;剩下的其他可以繼承的都是介面,在implements關鍵在後面可以跟著任意多個inte***ce,這些inte***ce要用逗號隔開;並且你也可以把該衍生類向上轉型為任意乙個inte***ce

5.如果乙個類既用extends關鍵字繼承乙個class又用implements關鍵字實現介面,那麼要先寫extends 繼承class然後再寫implements實現介面,否則編譯器報錯;

6.在實際開發中我們要首選inte***ces而不是abstract class,首選class而不是inte***ce,inte***ce或者abstract使用時需要有充分的理由,否則就是只能在**重構時是最有用的

7.通過繼承很容在新的介面中新增新的方法,並且也很常用結合幾個介面產生新的介面;

抽象類和介面的比較

1.抽象類 是一種特殊的類,具有以下特點 a 抽象方法只作宣告,而不包括實現,可以是看成沒有實現體的虛方法。b 抽象類不能被例項化,除此之外,具有類的其他特性。c 抽象類可以但不是不惜具有抽象方法和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類。d 具體派生類必須覆蓋抽象類的抽象方法。...

抽象類和介面的比較

包含乙個抽象方法的類必須是抽象類 抽象類和抽象方法都要使用abstract關鍵字宣告 抽象方法只需要宣告而不需要實現 抽象類必須被繼承,子類 如果不是抽象類 必須覆寫抽象類中的全部抽象方法 注意 抽象方法不要用private宣告,如果使用private宣告,子類將無法覆寫 ps 抽象類允許構造方法,...

抽象類和介面的比較

介面和抽象類是非常相似的,但是他們之間是有區別的,主要區別一下幾個方面 1 乙個類可以實現眾多個介面,但是只能繼承乙個抽象類,可以說介面是取消程式語言中的多繼承機制的乙個衍生物,但是不完全如此 2 抽象類可以有非抽象方法,既可以有已經實現的方法,繼承他的子類可以對方法進行覆寫 而介面中定義的餓方法必...