虛函數 純虛函數 抽象方法 接口

虛函數

虛函數實際上是C++中的講法,就是說將一個函數實現聲明爲虛函數,這樣就爲子類提供了一個默認的實現,子類能夠選擇進行從新實現,或者不進行實現。這樣對應到java裏,其實就是java裏的普通函數。虛函數是能夠由子類進行無限覆蓋的函數,另外本身也能夠進行實現,而java的普通成員函數就能夠作到,C++的普通函數就不行,不然就報重複定義error了,必須得加上virsual關鍵字聲明。java

 

純虛函數

也是C++的講法,與虛函數的區別就是聲明的地方不能有實現,徹底交給子類,至關於定義保留了一個接口。
C++中純虛函數形式爲:virtual void print() = 0;
對應到java中,就是抽象方法的概念,也就是abstract聲明的函數。
JAVA中抽象方法定義形式:abstract void print();函數

 

抽象類

C++與JAVA中都有這個概念,在C++中,只要一個類中包含了一個純虛函數,那麼這個類就是一個抽象類;而在JAVA中,若是一個類中包含有一個抽象方法,因爲JAVA有規定,這種狀況下,這個類必需要用abstract來修飾,也就是一個抽象類了。
C++與JAVA中的抽象類有個共同點,就是抽象類不能直接拿來實例化,由於其中有抽象的函數,只能經過實現了這些函數的子類實例化。spa

 

接口

C++中沒有獨立的接口的概念,其實就是成員函數所有爲純虛函數的類,子類必須對他們進行所有實現。
JAVA中有獨立的接口概念,就是interface修飾的類,跟C++中的純虛基類換湯不換藥,代碼看起來樣式不同而已,另外,java中的接口在聲明的時候必須都定義爲public的。接口

相關文章
相關標籤/搜索