更新時間:2020-06-11 15:41:32 來源:動力節點 瀏覽1947次
1、對象(object)
萬物皆為對象(根類Object類)。
程序是對象的集合(面向對象程序設計語言OOP)。
每個對象都有自己的由其他對象所構成的存儲(對象有成員屬性)。
每個對象都擁有其類型(每個對象都是某個類class的一個實例instance)。
某一特定類型的所有對象都可以接收同樣的信息(繼承)。
2、類型(type)
類描述具有相同特性(數據元素)和行為(功能)的對象集合。是面向對象設計除了基本數據類型外的,一種通用的數據類型。
3、對象作為“服務提供者”
提高對象的內聚性,將對象的設計簡化,并凸顯其提高的服務價值。
高質量代碼的基本要求是:可復用、高內聚、低耦合。
4、封裝(信息隱藏)
指利用抽象數據類型將數據和基于數據的操作封裝在一起,使其構成一個不可分割的獨立實體,數據被保護在抽象數據類型的內部,盡可能地隱藏內部的細節,只保留一些對外接口使之與外部發生聯系。系統的其他部分只有通過包裹在數據外面的被授權的操作來與這個抽象數據類型交流與交互。用戶無需知道對象內部方法的實現細節,但可以根據對象提供的外部接口(對象名和參數)訪問該對象。
一句話總結:
所謂封裝,就是把數據和方法保護在類的內部,只允許可信的類或對象操作,對不可信的進行信息隱藏。
好處:
(1)實現了專業的分工。
將能實現某一特定功能的代碼封裝成一個獨立的實體后,各程序員可以在需要的時候調用,從而實現了專業的分工。
(2)隱藏信息,實現細節。
通過控制訪問權限可以將可以將不想讓客戶端程序員看到的信息隱藏起來,如某客戶的銀行的密碼需要保密,只能對該客戶開發權限。
5、繼承(代碼復用)
is-a:純粹替代,extends。
is-like-a:擴展替代,extends與implements。
子類與父類的關系并不是日常生活中的父子關系,子類與父類而是一種特殊化與一般化的關系,是is-a的關系,子類是父類更加詳細的分類。
繼承后子類自動擁有了父類的屬性和方法,但特別注意的是,父類的私有屬性和構造方法并不能被繼承。
另外子類可以寫自己特有的屬性和方法,目的是實現功能的擴展,子類也可以復寫父類的方法即方法的重寫(overriding)。
一句話總結,
所謂繼承,就是可以使用現有類的所有數據和方法(包括私有的),并且不需要重復編寫現有類,實現功能擴展,達到代碼復用。
注意:設計繼承的時候,若要讓某個類能繼承,父類需適當開放訪問權限,遵循里氏代換原則,即向修改關閉對擴展開放,也就是開-閉原則。
6、多態(polymorphism)
相同接口的對象,調用其相同的方法,參數也相同時,但表現的行為卻不同。
多態分為編譯時多態(又稱靜態多態),以及運行時多態(又稱動態多態)。
編譯時多態,是指程序在編譯過程就可以確認調用哪個方法。
運行時多態,是指程序中的引用對象指向的哪個具體類型,以及該對象通過哪個具體方法調用,在編程中并不能確定,只有在運行時確定。這樣,我們可以讓引用對象綁定到不同的實現類上,從而實現該對象將有不同的具體方法調用,程序在運行時就有多個運行狀態。
實現編譯時多態:static、重載
實現運行時多態:繼承、重寫、向上轉型
子類以父類的身份出現,但做事情時還是以自己的方法(請注意是非private方法)實現。
子類以父類的身份出現需要向上轉型(upcast),其中向上轉型是由JVM自動實現的,是安全的,但向下轉型(downcast)是不安全的,需要強制轉換。
子類以父類的身份出現時自己特有的屬性和方法將不能使用。
注意:以下情況可能多態無效:
1、private方法重載
2、屬性同名且可以顯式訪問
3、static方法同名
以上就是動力節點java培訓機構的小編針對“Java編程的三大特性理解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習