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