1、對象(object)
萬物皆為對象(根類Object類)。
程序是對象的集合(面向?qū)ο蟪绦蛟O(shè)計(jì)語言O(shè)OP)。
每個對象都有自己的由其他對象所構(gòu)成的存儲(對象有成員屬性)。
每個對象都擁有其類型(每個對象都是某個類class的一個實(shí)例instance)。
某一特定類型的所有對象都可以接收同樣的信息(繼承)。
2、類型(type)
類描述具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象集合。是面向?qū)ο笤O(shè)計(jì)除了基本數(shù)據(jù)類型外的,一種通用的數(shù)據(jù)類型。
3、對象作為“服務(wù)提供者”
提高對象的內(nèi)聚性,將對象的設(shè)計(jì)簡化,并凸顯其提高的服務(wù)價值。
高質(zhì)量代碼的基本要求是:可復(fù)用、高內(nèi)聚、低耦合。
4、封裝(信息隱藏)
指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個不可分割的獨(dú)立實(shí)體,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)系。系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的被授權(quán)的操作來與這個抽象數(shù)據(jù)類型交流與交互。用戶無需知道對象內(nèi)部方法的實(shí)現(xiàn)細(xì)節(jié),但可以根據(jù)對象提供的外部接口(對象名和參數(shù))訪問該對象。
一句話總結(jié):
所謂封裝,就是把數(shù)據(jù)和方法保護(hù)在類的內(nèi)部,只允許可信的類或?qū)ο蟛僮?,對不可信的進(jìn)行信息隱藏。
好處:
(1)實(shí)現(xiàn)了專業(yè)的分工。
將能實(shí)現(xiàn)某一特定功能的代碼封裝成一個獨(dú)立的實(shí)體后,各程序員可以在需要的時候調(diào)用,從而實(shí)現(xiàn)了專業(yè)的分工。
(2)隱藏信息,實(shí)現(xiàn)細(xì)節(jié)。
通過控制訪問權(quán)限可以將可以將不想讓客戶端程序員看到的信息隱藏起來,如某客戶的銀行的密碼需要保密,只能對該客戶開發(fā)權(quán)限。
5、繼承(代碼復(fù)用)
is-a:純粹替代,extends。
is-like-a:擴(kuò)展替代,extends與implements。
子類與父類的關(guān)系并不是日常生活中的父子關(guān)系,子類與父類而是一種特殊化與一般化的關(guān)系,是is-a的關(guān)系,子類是父類更加詳細(xì)的分類。
繼承后子類自動擁有了父類的屬性和方法,但特別注意的是,父類的私有屬性和構(gòu)造方法并不能被繼承。
另外子類可以寫自己特有的屬性和方法,目的是實(shí)現(xiàn)功能的擴(kuò)展,子類也可以復(fù)寫父類的方法即方法的重寫(overriding)。
一句話總結(jié),
所謂繼承,就是可以使用現(xiàn)有類的所有數(shù)據(jù)和方法(包括私有的),并且不需要重復(fù)編寫現(xiàn)有類,實(shí)現(xiàn)功能擴(kuò)展,達(dá)到代碼復(fù)用。
注意:設(shè)計(jì)繼承的時候,若要讓某個類能繼承,父類需適當(dāng)開放訪問權(quán)限,遵循里氏代換原則,即向修改關(guān)閉對擴(kuò)展開放,也就是開-閉原則。
6、多態(tài)(polymorphism)
相同接口的對象,調(diào)用其相同的方法,參數(shù)也相同時,但表現(xiàn)的行為卻不同。
多態(tài)分為編譯時多態(tài)(又稱靜態(tài)多態(tài)),以及運(yùn)行時多態(tài)(又稱動態(tài)多態(tài))。
編譯時多態(tài),是指程序在編譯過程就可以確認(rèn)調(diào)用哪個方法。
運(yùn)行時多態(tài),是指程序中的引用對象指向的哪個具體類型,以及該對象通過哪個具體方法調(diào)用,在編程中并不能確定,只有在運(yùn)行時確定。這樣,我們可以讓引用對象綁定到不同的實(shí)現(xiàn)類上,從而實(shí)現(xiàn)該對象將有不同的具體方法調(diào)用,程序在運(yùn)行時就有多個運(yùn)行狀態(tài)。
實(shí)現(xiàn)編譯時多態(tài):static、重載
實(shí)現(xiàn)運(yùn)行時多態(tài):繼承、重寫、向上轉(zhuǎn)型
子類以父類的身份出現(xiàn),但做事情時還是以自己的方法(請注意是非private方法)實(shí)現(xiàn)。
子類以父類的身份出現(xiàn)需要向上轉(zhuǎn)型(upcast),其中向上轉(zhuǎn)型是由JVM自動實(shí)現(xiàn)的,是安全的,但向下轉(zhuǎn)型(downcast)是不安全的,需要強(qiáng)制轉(zhuǎn)換。
子類以父類的身份出現(xiàn)時自己特有的屬性和方法將不能使用。
注意:以下情況可能多態(tài)無效:
1、private方法重載
2、屬性同名且可以顯式訪問
3、static方法同名
以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對“Java編程的三大特性理解”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。