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 抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類...