對Java的四大特性的理解
工作幾年再回頭聊這些四大特性感覺很easy,的確這是Java的入門知識,但是要把這幾個特性說清楚及平時怎麼使用,估計好多人含糊其辭,大家估計都是心裡明白,愛在心中口難開。這其實是我們對Java的三大特性理解不深,我也藉此機會深入理解下Java的三大特性。
一,封裝
封裝的定義:隱藏物件的屬性及實現細節,僅對外公開訪問介面,控制外部訪問對外介面的訪問許可權,使物件內部資料及資料操作結合一個整體-類。
封裝的目的:增強物件的安全性及簡化程式設計,訪問者不需要了解內部 具體實現,只用通過開放的外部介面,當然對外的介面我們可以限制訪問許可權,對於封裝而言,一個物件它所封裝的是自己的屬性和方法,所以它是不需要依賴其他物件就可以完成自己的操作
封裝的好處:
1.隱藏資訊,實現細節,對外開放介面,並控制介面訪問許可權,比如使用者的賬號密碼是不會讓訪問者看到,但是我們可以通過登陸介面控制使用者的登入
2.良好的封裝能減少程式碼的耦合,當然這個需要
3.專業的分工,單一職責原則-每一個類只負責一項任務,這也是我們寫程式碼會潛意識會遵循這個原則,而不會把人的屬性寫到牲畜的類裡
二,繼承
如果兩個類的屬性,方法相同或相似,我們可以使用繼承降低程式碼的複用。Java中所有的類直接或間接繼承於Object類,Object是所有類的父類,而所有子類繼承父類的屬性,方法,除過父類私有的屬性及方法(private修飾),子類可重寫父類方法,
繼承的特點:
1.子類可以擁有父類非私有的屬性及方法,父類的構造方法子類也不能繼承
2.子類可以擁有自己的屬性與方法,
3.子類可以重寫父類的方法,一般這時父類的方法不能滿足子類的需求
4.Java的繼承是單繼承,子類最多隻能擁有一個父類
5.向上轉型,就比如狗屬於動物,我們可以直接叫狗是動物,比如:List list = new ArrayList();
繼承的缺陷:
1,繼承破壞了封裝,父類的屬性方法對於子類來說是透明的,這與封裝是相背離的
2,繼承是一種強耦合關係,程式碼結構中亂用繼承會造成牽一髮而動全身
繼承的使用:
考慮子類是否要向上轉型,如果子類是要向上轉型的那用繼承合適不過了,如果不是向上轉型那就請慎用繼承
三,抽象
抽象是現實的真實反應,但卻不和任何具體實現繫結。Java的抽象主要是抽象類和介面。
抽象的好處:
1.把物件的共性抽象起來,使的程式碼編寫簡單,容易維護,
2.定義介面或抽象類規範,所有實現或繼承的類或子類都要遵循這些規範,
3.抽象是對現實的真實反應,但又是高度抽象的,是不能被例項化
四,多型
不同類物件對同一訊息作出的不同反應,即貓狗都屬於動物,貓叫是咪,狗叫是汪。
多型存在的條件:
1.必須是繼承關係
2.子類重寫父類方法
3.父類引用指向子類物件
多型的分類:
1.編譯期間,即同一個類中方法的過載
2.執行期間,即子類對父類的方法的重寫
使用多型的好處:
1.擴充性:多型對程式碼有擴充性,增加子類不影響其他子類的執行,
2.介面性:多型是超類對子類提供共同介面,子類根據自己情況進行覆蓋或實現