C++與Java都是面向物件的編程語言,同樣是面向對面編程,那他們的不同之處今天我們就來看一看吧!
參考:
java和c++都有參考的概念,但兩者是完全不同的東西,c++的參考是變數的一個別名,參考一旦系結就不能重新參考其他變數,c++參考也不能為null,java參考更像c++的指標,對參考賦值是重新系結參考的物件(在c++里面是改變物件的值),參考可以為null(導致了煩人的NPE問題,萬惡之源)
型別系統:
java區分值型別與參考型別,用戶自定義型別都是參考型別,值型別和參考型別在很多地方不能混用(如泛型引數),c++沒有值型別和參考型別的概念,類似的概念是普通類和它的指標型別,
java有根基類Object,c++沒有根基類,
訪問控制:
都有public,protected,private三級訪問控制
此外,java還有包訪問控制,c++有友元
繼承:
c++分public繼承,protected繼承(意義不明)和private繼承(基本和組合沒啥區別),java只有public繼承,
c++只能覆寫基類中顯式定義的虛函式,java中方法默認是虛的,除非顯式標明final
c++支持多重繼承,java只支持單繼承,但支持實作多個介面(c++沒有語法層面上的介面)
構造與析構:
物件構造大致相同,但是c++在建構式中呼叫虛函式無法多型(因為物件的子類部分還沒構造)
c++可以定義解構式,java沒有解構式(java提供一個終結方法,但它和解構式不是等價的)
物件生命周期控制:
c++主要靠手動申請,釋放記憶體或者借助解構式(RAII技術),java依靠gc
例外處理:
c++沒有也不需要finally塊,釋放資源依靠解構式就行了,
泛型:
c++模板采用代碼生成技術,運行時能夠保留型別資訊,java采用型別擦除,型別資訊在運行時就沒了(所以其實只是進行安全的自動型別轉換而已……),c++模板引數可以是基本型別,用戶自定義型別和整型常量,java只能是參考型別,c++還可以對模板進行特化,java沒有這個功能,
其他:
c++有運算子多載,java沒有(除了String類多載了+)
通過這篇文章,大家對于C++與Java的面向物件的不同知道了多少呢?記不住的小伙伴可以收藏一下,希望對大家有幫助哦~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ群1095293493【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍分享:

編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188296.html
標籤:C++
