抽象類(abstract class)和繼承(inheritance)的區別

抽象類和繼承是許多面向物件程式語言(如Java)中的兩個重要的面向物件概念。抽象類可以看作是常規(具體)類的抽象版本,而繼承允許新類擴充套件其他類。抽象類是一個不能初始化但可以擴充套件的類。因此,抽象類只有在程式語言支援繼承的情況下才有意義。在Java中,抽象類使用Abstract關鍵字宣告,而Extends關鍵字用於從(超級)類繼承。...

抽象類與繼承

抽象類和繼承是許多面向對象編程語言(如Java)中的兩個重要的面向對象概念。抽象類可以看作是常規(具體)類的抽象版本,而繼承允許新類擴展其他類。抽象類是一個不能初始化但可以擴展的類。因此,抽象類只有在編程語言支持繼承的情況下才有意義。在Java中,抽象類使用Abstract關鍵字聲明,而Extends關鍵字用於從(超級)類繼承。

什麼是抽象類?

通常,抽象類,也稱為抽象基類(ABC),不能實例化(不能創建該類的實例)。因此,只有當編程語言支持繼承(通過擴展類創建子類的能力)時,抽象類才有意義。抽象類通常表示一個抽象的概念或實體,有部分實現或沒有實現。因此,抽象類充當從中派生子類的父類,這樣子類將共享父類的不完整特性,並且可以添加功能來完成它們。

抽象類可以包含抽象方法。擴展抽象類的子類可以實現這些(繼承的)抽象方法。如果子類實現了所有這樣的抽象方法,那麼它就是一個具體類。但如果不是這樣,子類也會變成抽象類。所有這一切意味著,當程序員指定一個類作為一個抽象類時,她是說這個類將是不完整的,它將有需要繼承子類完成的元素。這是在兩個程序員之間創建契約的好方法,它簡化了軟件開發中的任務。編寫代碼來繼承的程序員需要嚴格遵循方法定義(當然也可以有自己的實現)。

什麼是繼承?

繼承是一個面向對象的概念,它允許新類擴展其他類。Extends關鍵字用於實現Java編程語言中的繼承概念。繼承本質上通過允許通過新定義的類擴展現有類的屬性和行為來提供代碼重用。當一個新的子類(或派生類)擴展一個超類(或父類)時,該子類將繼承該超類的所有屬性和方法。子類可以選擇性地重寫從父類繼承的行為(為方法提供新的或擴展的功能)。通常,一個子類不能擴展多個超類(例如在Java中)。因此,不能將擴展用於多重繼承。為了有多重繼承,你需要使用接口。

抽象類和繼承有什麼區別?

  • 發表於 2020-10-23 05:58
  • 閱讀 ( 21 )
  • 分類:科技

你可能感興趣的文章

分帶(zonation)和繼承人(succession)的區別

...例子。一般來說,二次演替比一次演替快。 分帶(zonation)和繼承人(succession)的共同點 地帶性和演替是描述生態系統群落組成變化的兩種現象。 分帶(zonation)和繼承人(succession)的區別 地帶性是指物種在生境中分佈的逐漸變化,而...

  • 發佈於 2020-09-22 19:48
  • 閲讀 ( 49 )

班(class)和結構(c)#(structure in c#)的區別

...isplayDetails方法。列印學生證和姓名。 這些類也可以實現繼承。繼承是面向物件程式設計的一個特性。它是使用已經存在的類的屬性和方法。因此,一個類可以繼承另一個類。 什麼是c中的結構#(structure in c#)? 該結構是C#中的值...

  • 發佈於 2020-10-19 17:15
  • 閲讀 ( 53 )

多型性(polymorphism)和oop中的繼承(inheritance in oop)的區別

...向物件程式設計中的一個主要概念。 什麼是oop中的繼承(inheritance in oop)? 參考下面用Java編寫的程式。 圖03:繼承示例 根據上面的程式,A類有sum()方法,B類有sub()方法。 類A的sum()方法可以在B類中使用extend關鍵字。重用...

  • 發佈於 2020-10-19 21:16
  • 閲讀 ( 58 )

班(class)和介面(interface)的區別

...子類中可以訪問受保護的成員。 什麼是介面(interface)? 抽象是面向物件程式設計的支柱。它將隱藏實現細節並向用戶顯示功能。抽象是透過使用抽象類和介面來實現的。抽象方法沒有實現。至少包含一個抽象方法的類稱為抽象...

  • 發佈於 2020-10-24 04:25
  • 閲讀 ( 57 )

繼承(inheritance)和java介面(interface in java)的區別

繼承(inheritance)和java介面(interface in java)的區別 Java是Sun Microsystems公司開發的一種程式語言。Java可以用來開發各種應用程式。它是一種支援面向物件、結構化等多種正規化的語言,Java的主要優點是支援面向物件程式設計(OOP)...

  • 發佈於 2020-10-25 00:02
  • 閲讀 ( 64 )

摘要(abstract)和具體思路(concrete thinking)的區別

...這兩個術語,並找出它們之間的差異。 什麼是抽象思維(abstract thinking)? 首先,抽象思維可以解釋為一種思維方式,這種思維方式集中於對某一事物的概念化或概括化。一個抽象的思考者可以從別人看不到的角度來看待一個特定...

  • 發佈於 2020-11-04 10:41
  • 閲讀 ( 49 )

面向物件程式設計中抽象的初學者指南

... 什麼是抽象什麼(abstract and what)? ...

  • 發佈於 2021-03-30 04:01
  • 閲讀 ( 80 )

班(class)和結構(struct)的區別

...可以使用結構'入口'與個人的名稱和大小。 什麼是繼承(inheritance)? 這類似於兒子繼承父親的財產,反過來,兒子也可以增加自己的一些其他財產。類可以是基類,也可以是派生類,其中前者可以作為基類來形成後者。派生類除...

  • 發佈於 2021-06-25 00:32
  • 閲讀 ( 50 )

抽象類(abstract class)和c中的介面#(interface in c#)的區別

...讓我們詳細討論一下兩者的理論方面。 什麼是抽象類(an abstract class)? 抽象類是一種特殊型別的類,它充當其他類的基,不能例項化。抽象類的實現邏輯由其派生類提供。為了使一個類抽象,使用了“abstract”修飾符,這意味著...

  • 發佈於 2021-06-25 03:34
  • 閲讀 ( 56 )

抽象(abstraction)和封裝(encapsulation)的區別

...藏了一些東西,但是它們也有各自的區別。 什麼是抽象(abstraction)? 抽象是一個基本的OOP概念,它只關註物件的相關資料,隱藏所有不相關的細節,這些細節可能是通用的,也可能不是專用的行為。它隱藏了背景細節,強調了減...

  • 發佈於 2021-06-25 03:41
  • 閲讀 ( 56 )