1. Java虛函數函數
虛函數的存在是爲了多態。spa
C++中普通成員函數加上virtual關鍵字就成爲虛函數orm
Java中其實沒有虛函數的概念,它的普通函數就至關於C++的虛函數,動態綁定是Java的默認行爲。若是Java中不但願某個函數具備虛函數特性,能夠加上final關鍵字變成非虛函數接口
PS: 其實C++和Java在虛函數的觀點大同小異,殊途同歸罷了。it
2. Java抽象函數(純虛函數)變量
抽象函數或者說是純虛函數的存在是爲了定義接口。方法
C++中純虛函數形式爲:virtual void print() = 0;數據
Java中純虛函數形式爲:abstract void print();di
PS: 在抽象函數方面C++和Java仍是換湯不換藥。vi
3. Java抽象類
抽象類的存在是由於父類中既包括子類共性函數的具體定義,也包括須要子類各自實現的函數接口。抽象類中能夠有數據成員和非抽象方法。
C++中抽象類只須要包括純虛函數,既是一個抽象類。若是僅僅包括虛函數,不能定義爲抽象類,由於類中其實沒有抽象的概念。
Java抽象類是用abstract修飾聲明的類。
PS: 抽象類實際上是一個半虛半實的東西,能夠所有爲虛,這時候變成接口。
4. Java接口
接口的存在是爲了造成一種規約。接口中不能有普通成員變量,也不能具備非純虛函數。
C++中接口其實就是全虛基類。
Java中接口是用interface修飾的類。
PS: 接口就是虛到極點的抽象類。
5. 小結
C++虛函數 == Java普通函數
C++純虛函數 == Java抽象函數
C++抽象類 == Java抽象類
C++虛基類 == Java接口