Java中虛函數和純虛函數


有人看到 Java 里虛函數和純虛函數這兩個名詞,接觸 Java 很久了並沒有聽說過這兩個詞,查詢了一番才明白。

  1. Java 虛函數

    虛函數的存在是為了多態。C++ 中普通成員函數加上 virtual 關鍵字就成為虛函數。

    虛函數和純虛函數,這個是 C++ 的說法,Java 中其實沒有虛函數的概念,它的普通函數就相當於 C++ 的虛函數,動態綁定是 Java 的默認行為。如果 Java 中不希望某個函數具有虛函數特性,可以加上 final 關鍵字變成非虛函數。

  2. Java 純虛函數(抽象函數)

    抽象函數或者說是純虛函數的存在是為了定義接口。

    C++ 中純虛函數形式為:virtual void print() = 0;

    Java 中純虛函數形式為:abstract void print();

    注:在抽象函數方面 C++ 和 Java 還是換湯不換葯。

  3. Java 抽象類

    抽象類的存在是因為父類中既包括子類共性函數的具體定義,也包括需要子類各自實現的函數接口。抽象類中可以有數據成員和非抽象方法。

    C++ 中抽象類只需要包括純虛函數,既是一個抽象類。如果僅僅包括虛函數,不能定義為抽象類,因為類中其實沒有抽象的概念。

    Java 抽象類是用 abstract 修飾聲明的類。

    注:抽象類其實是一個半虛半實的東西,可以全部為虛,這時候變成接口。

  4. Java 接口

    接口的存在是為了形成一種規約。接口中不能有普通成員變量,也不能具有非純虛函數。

    C++ 中接口其實就是全虛基類。

    Java 中接口是用 interface 修飾的類。

    注:接口就是虛到極點的抽象類。

  5. 總結

    C++ 虛函數 == Java 普通函數

    C++ 純虛函數 == Java 抽象函數

    C++ 抽象類 == Java 抽象類

    C++ 虛基類 == Java 接口

參考:

https://www.cnblogs.com/jianglinliu/p/11833499.html

https://zhidao.baidu.com/question/2266452120699814068.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM