抽象類與具體類
大多數流行的現代面向對象編程語言(如Java和C)都是基於類的。它們通過類的使用來實現封裝、繼承、多態等面向對象的概念。類是現實世界對象的抽象表示。類可以是具體的,也可以是抽象的,這取決於其方**能的實現級別。一個具體的類完全實現了它的所有方法。抽象類可以被視為常規(具體)類的有限版本,其中它可能包含部分實現的方法。通常,具體類被稱為(僅僅)類。
什麼是混凝土班?
默認類是一個具體類。class關鍵字用於定義類(例如在Java中)。通常它們被簡單地稱為類(沒有形容詞concrete)。具體類描述真實世界對象的概念表示。類具有稱為屬性的屬性。屬性被實現為全局變量和實例變量。類中的方法表示或定義這些類的行為。類的方法和屬性稱為類的成員。通常,封裝是通過使屬性私有化來實現的,同時創建可用於訪問這些屬性的公共方法。對象是類的實例。繼承允許用戶從其他類(稱為超級類)擴展類(稱為子類)。多態性允許程序員用一個類的對象代替它的超類的對象。通常,在問題定義中找到的名詞直接成為程序中的類。同樣,動詞變成了方法。Public、private和protected是類的典型訪問修飾符。
什麼是抽象類?
抽象類使用Abstract關鍵字聲明(例如在Java中,)。通常,抽象類,也稱為抽象基類(ABC),不能實例化(不能創建該類的實例)。因此,只有當編程語言支持繼承(通過擴展類創建子類的能力)時,抽象類才有意義。抽象類通常表示一個抽象的概念或實體,有部分實現或沒有實現。因此,抽象類充當從中派生子類的父類,這樣子類將共享父類的不完整特性,並且可以添加功能來完成它們。
抽象類可以包含抽象方法。擴展抽象類的子類可以實現這些(繼承的)抽象方法。如果子類實現了所有這樣的抽象方法,它將成為一個具體類。但如果不是這樣,子類也會變成抽象類。所有這一切意味著,當程序員指定一個類作為一個抽象類時,她是說這個類將是不完整的,它將有需要繼承子類完成的元素。這是在兩個程序員之間創建契約的好方法,它簡化了軟件開發中的任務。編寫代碼來繼承的程序員需要嚴格遵循方法定義(當然也可以有自己的實現)。
抽象類和具體類有什麼區別?