事實上的(virtual)和摘要(abstract)的區別

Virtual和Abstract是大多數面向物件(OO)程式語言(如Java和C)中使用的兩個關鍵字。儘管在不同的語言中它的含義略有不同,但虛擬關鍵字和抽象關鍵字都為它所附加的實體提供了一種部分實現的感覺。...

虛擬與抽象

Virtual和Abstract是大多數面向對象(OO)編程語言(如Java和C)中使用的兩個關鍵字。儘管在不同的語言中它的含義略有不同,但虛擬關鍵字和抽象關鍵字都為它所附加的實體提供了一種部分實現的感覺。

摘要

通常,抽象類,也稱為抽象基類(ABC),不能實例化(不能創建該類的實例)。因此,只有當編程語言支持繼承(通過擴展類創建子類的能力)時,抽象類才有意義。抽象類通常表示一個抽象的概念或實體,有部分實現或沒有實現。因此,抽象類充當從中派生子類的父類,這樣子類將共享父類的不完整特性,並且可以添加功能來完成這些特性。抽象類可以包含抽象方法。擴展抽象類的子類可以實現這些(繼承的)抽象方法。如果子類實現了所有這樣的抽象方法,那麼它就是一個具體類。但如果不是這樣,子類也會變成抽象類。所有這一切意味著,當程序員指定一個類作為一個抽象類時,她是說這個類將是不完整的,它將有需要繼承子類完成的元素。這是在兩個程序員之間創建契約的好方法,它簡化了軟件開發中的任務。編寫代碼來繼承的程序員需要嚴格遵循方法定義(當然也可以有自己的實現)。在Java和C中,抽象類和方法是使用Abstract關鍵字聲明的。

事實上的

虛擬方法/函數提供了通過繼承類(使用具有相同簽名的函數)選擇性重寫其行為的能力。虛擬函數的概念在以下場景中很重要。假設一個類是由子類派生的,那麼每當使用派生類的對象時,它可能引用基類或派生類的對象。但是,如果基類方法被重寫,方法調用行為可能是不明確的。因此,為了解決這種模糊性,使用了虛擬關鍵字。如果方法標記為Virtual,則調用派生類的函數(如果有),否則調用基類的函數。例如,在C++中,虛擬關鍵字正好用於此目的。在C#中,Virtual關鍵字的使用方式類似,但除此之外,關鍵字重寫應用於修改所有重寫的方法。但是在Java中,沒有顯式的虛關鍵字。所有非靜態方法都被認為是虛擬的。沒有實體的虛函數稱為純虛函數。在Java和C中,抽象方法實際上是純虛擬的。

虛與抽象的區別

  • 發表於 2020-11-02 16:43
  • 閱讀 ( 13 )
  • 分類:科技

你可能感興趣的文章

事實上的(virtual)和傳統團隊(traditional teams)的區別

...效的組織績效提供了非常堅實的基礎。 什麼是虛擬團隊(virtual teams)? 虛擬團隊是一組為共同目的而工作的人,他們在不同的地點工作。隨著科技的進步,虛擬團隊的概念被引入。在這些團隊中,人們在透過IT和軟體技術建立和...

  • 發佈於 2020-10-15 07:13
  • 閲讀 ( 50 )

虛擬機器(virtual machine)和伺服器(server)的區別

...-虛擬機器與伺服器的表格形式 6. 摘要 什麼是虛擬機器(a virtual machine)? 計算機是執行各種任務的電子裝置。計算機的物理部件稱為硬體。處理器、硬碟、光碟機、軟盤是一些硬體元件的例子。為了使硬體元件正常工作,必須有...

  • 發佈於 2020-10-19 14:47
  • 閲讀 ( 52 )

摘要(abstract)和介紹(introduction)的區別

...解兩者的區別,以及摘要和導言的作用。 什麼是摘要(an abstract)? 首先讓我們從抽象開始。摘要,也稱為大綱,是期末論文的簡短形式。它包含了研究結果的關鍵。摘要也指提交會議或研討會的研究論文的簡短版本。任何一所大...

  • 發佈於 2020-10-22 19:14
  • 閲讀 ( 51 )

快取記憶體(cache memory)和虛擬記憶體(virtual memory)的區別

...本獲得更好的平均記憶體訪問時間。 什麼是虛擬記憶體(virtual memory)? 虛擬記憶體是計算機系統中使用的一種記憶體管理技術。沒有硬體稱為虛擬記憶體,但它是一個概念,使用RAM和硬碟為程式提供虛擬地址空間。第一個RAM被分...

  • 發佈於 2020-10-29 11:12
  • 閲讀 ( 79 )

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

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

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

事實上的(virtual)和快取記憶體(cache memory)的區別

在計算機世界裡,memory sets the limit upon which we base if we can run that program or not. If you were unlucky enough to have experienced DOS, then you know the bane of the 640k memory limit. Nowadays memory seems to be almost infinite and nobody actually gets the ‘not enough memory’ me...

  • 發佈於 2021-06-22 11:01
  • 閲讀 ( 55 )

抽象類(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
  • 閲讀 ( 57 )

抽象類(abstract class)和java介面(interface in java)的區別

...們詳細研究一下兩者的區別。 什麼是java中的抽象類(an abstract class in java)? Java中的抽象類是一個宣告為抽象的類——它可能包含也可能不包含抽象方法。它與Java介面非常相似,只是它可以包含預設的方法實現。與面向物件程式...

  • 發佈於 2021-06-25 03:52
  • 閲讀 ( 45 )

抽象(abstraction)和虛擬化(virtualization)的區別

...許多個虛擬機器在單個物理機上執行。   什麼是抽象(abstraction)? 抽象是在向用戶和開發人員隱藏背景細節的同時表示基本特性的行為。虛擬化類似於抽象,但它並不總是隱藏底層的細節。抽象一詞在計算行業中有多個層次的...

  • 發佈於 2021-06-26 12:32
  • 閲讀 ( 45 )