程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 虛函數與純虛函數(C++與Java虛函數的差別)的深刻剖析

虛函數與純虛函數(C++與Java虛函數的差別)的深刻剖析

編輯:關於C++

虛函數與純虛函數(C++與Java虛函數的差別)的深刻剖析。本站提示廣大學習愛好者:(虛函數與純虛函數(C++與Java虛函數的差別)的深刻剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是虛函數與純虛函數(C++與Java虛函數的差別)的深刻剖析正文


c++
虛函數
1.界說:在某基類中聲明為 virtual 並在一個或多個派生類中被從新定 義的成員函數 [1]
2.語法:virtual 函數前往類型 函數名(參數表) { 函數體 }
3.用處:完成多態性,經由過程指向派生類的基類指針,拜訪派生類中同名籠罩成員函數,也就是許可子類override父類同名辦法。
虛函數的感化是完成靜態聯編,也就是在法式的運轉階段靜態地選擇適合的成員函數,在界說了虛函數後,可以在基類的派生類中對虛函數從新界說,在派生類中從新界說的函數應與虛函數具有雷同的形參個數和形參類型(也就是完整雷同的辦法,不克不及只是函數名雷同。)。以完成同一的接口,分歧的界說進程。假如在派生類中沒有對虛函數從新界說,則它繼續其基類的虛函數。

當法式發明虛函數名前的症結字virtual後,會主動將其作為靜態聯編處置,即在法式運轉時靜態地選擇適合的成員函數。虛函數是C++多態的一種表示。靜態聯編劃定,只能經由過程指向基類的指針或基類對象的援用來挪用虛函數,其格局:
1.指向基類的指針變量名->虛函數名(實參表)
2.基類對象的援用名. 虛函數名(實參表)
應用虛函數,我們可以靈巧的停止靜態綁定,固然是以必定的開支為價值。假如父類的函數(辦法)基本沒有需要或許沒法完成,完整要依附子類去完成的話,可以把此函數(辦法)設為virtual 函數名=0 ,例如:virtual void fun() = 0,我們把如許的函數(辦法)稱為純虛函數。假如一個類包括了純虛函數,稱此類為籠統類。
總結:假如一個子類想要重寫父類的辦法,那末父類的這個成員辦法必需是virtual的,也就是這個辦法必需是虛函數。

java
在java中,一切辦法默許就是虛擬的,只需辦法不是聲明為final類型的,那末確定就是虛函數,不消為辦法顯示聲明為virtual。在<core java2 :volum I>中提到:"In Java, you do not need to declare a method as virtual. Dynamic binding is the default behavior. If you do not want a method to be virtual, you tag it as final"。所以我們發明,在java中,子類可以重寫(override)父類的辦法,而父類沒有聲明virtual。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved