Java面向對象的特性和跨平臺性

一、Java面向對象的三大特性:

Java語言的三大特性爲:封裝、繼承、多態
– 封裝:
封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構, 同時也保護了數據。對外界而言它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。
屬性可以用來描述同一類事物的特徵,方法可以描述一類事物的操作。封裝就是把屬於同一類事物的共性(即屬性和方法等)歸爲一個類中,以方便使用。
- 概念: 封裝也叫作信息隱藏,是指利用抽象數據類型將數據和基於數據的操作封裝在一起,使其構成一個不可分割的獨立實體,數據被保護在抽象數據類型的內部,儘可能的隱藏內部的細節,只保留一些歲外接口,使之與外不發生聯繫。 系統的其他部分只有通過包裹在數據外面的被授權的操作與這個抽象數據類型交流與交互。也就是說,用戶無需知道對象內部方法的實現細節,但可以根據對象提供的外部接口(對象名和參數)來訪問該對象。
-好處: a. 實現了專業的分工。將能實現某一特定的代碼封裝成一個獨立的實體後,各程序猿可以在需要的時候來進行調用,實現了專業的分工;
b. 隱藏信息,實現細節。 通過控制訪問權限可以將不想讓客戶端開發人員看到的信息隱藏起來,如某客戶的銀行密碼需要保密,只能對該客戶開放權限。

– 繼承:
就是個性對共性的屬性和方法的接受,並加入個性特有的屬性和方法。
- 概念:一個類繼承另一個類,則稱繼承的類爲子類,被繼承的類爲父類。
- 目的: 實現代碼的複用
- 理解: 子類和父類的關係並不是日常生活中的父子關係,子類與父類而是一種特殊化與一般化的關係,是 is-a的關係,子類是父類更加詳細的分類。如Class Dog extends Animal,既可以理解爲dog is a animal。 在設計繼承的時候,若要某個類能夠繼承,父類需要適當的開放權限,遵循里氏代換原則,即向修改關閉對擴展開放,也就是“開-閉”原則
- 結果: 繼承後子類就自動擁有了父類的屬性和方法,但特別注意的是,父類的私有屬性和構造方法不能被繼承。 另外子類可以寫自己特有的屬性和方法,目的就是實現對父類功能的拓展,子類也可以複寫父類的方法,即方法的重寫。

– 多態:
只有在運行的時候纔會知道引用變量所指向的具體實例對象是哪個。
- 概念:相同的事物,調用其相同的方法,參數也相同時,但表現的行爲卻不同。
- 理解:子類以父類的身份出現,但做事情時還是以自己的方法來實現。 子類以父類的身份出現 需要向上轉型(upcast),其中向上轉型是由JVM自動實現的,是安全的,但向下轉型(down cast )是不安全的,需要強制轉換。子類以父類的身份出現時自己特有的屬性和方法將不能使用。
所謂多態就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定的,即一個引用變量到底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在程序運行期間才能確定。
因爲在程序運行時才確定的類,這樣不用修改源程序代碼就可以讓引用變量綁定到各種不同的類實現上,從而導致調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。
java具有多態性的三個條件: 繼承、重寫和向上轉型
http://blog.csdn.net/chenssy/article/details/12786385

二、爲什麼說Java是跨平臺性語言?C和C++爲什麼不是?:

Java是跨平臺的,因爲Java並不直接編譯爲機器語言,而是先編譯爲中間語言。在各平臺上的Java虛擬機,可以對中間語言解釋執行,所以說它是跨平臺的。
然而C和C++,是直接編譯成機器語言(機器碼)的,這種語言在不同的機器上有不同的格式,同一個C++程序,由它所編譯成的執行文件往往不能在另一個平臺的機器上運行。至於C++作爲主流的變成語言,它直接寫出的是源程序,源程序是不可以直接執行的,就像我們買一個軟件產品時, 是買它的可執行代碼,而不是買它的源程序,比如:我們買一個遊戲,應該是直接能夠玩的,廠家給我們源代碼,大部分的買家是看不懂的。

發佈了64 篇原創文章 · 獲贊 221 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章