常規類 抽象類和介面的對比分析

2022-09-11 09:42:08 字數 413 閱讀 1187

1.抽象類和介面

1)有無子類共享的例項變數

2)有無子類共享的方法體

3)子類可否通過super();呼叫到基類的建構函式

4)繼承個數

2.抽象類和常規類

有無維護的意義,即基類例項物件有無存在的現實意義

3.究竟應該是有inte***ce、abstract class還是一般的class?

1)inte***ce更優於abstract,因為程式設計師可以以此撰寫出「可被向上轉型為多個基型別別」的class,從而類似實現c++中的多繼承

2)若撰寫的基類可以不帶任何函式定義或任何成員變數,應優先考慮用inte***ce

3)必須帶有函式定義或成員變數時,使用abstract class

4)基類物件在需求分析/需求世界中有存在的現實意義,用class

抽象類和介面的關係對比

抽象類 抽象類主要用來定義一些抽象的屬性和方法,留待子類根據自己的情況實現這些屬性和方法 抽象類不能生成例項,即不能new乙個抽象類的例項 抽象類可以被繼承,除非繼承該抽象類的子類仍宣告為抽象的,否則就必須實現這個抽象類的所有抽象屬性和方法 乙個類只能繼承乙個抽象類,如果需要實現多個類的抽象方法,必...

對比抽象類和介面

1 abstract關鍵字只能修飾類和方法,不能修飾字段。2 抽象類不能被例項化 通俗點講,不能被new 只能被繼承。3 抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,列舉類,和普通類一樣,普通方法一定要實現,變數可以初始化或不初始化,但是不能初始化後再在抽象類中重新賦值或操作該變數 只能在...

介面和抽象類的對比

相同點 1 都是抽象型別。2 都可以有實現方法 3 都可以不需要實現類或者繼承者去實現所有方法。4 抽象類和介面都不能直接例項化,如果要例項化,抽象類變數必須指向實現所有抽象方法的子類物件,介面變數必須指向實現所有介面方法的類物件。5 抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類...