封裝和繼承幾乎都是為多態而准備的
首先,屬性能夠描述事物的特征,方法能夠描述事物的動作。封裝就是把同一類事物的共性(包括屬性和方法)歸到同一類中,方便使用。
1) 實現了專業的分工
2) 良好的封裝能夠減少耦合
3) 類內部的結構能夠自有修改
4) 可以對成員進行更精確的控制
5) 隱藏信息,實現細節
1) 修改屬性的可見性來限制對屬性的訪問
2) 為每個屬性創建一隊賦值和取值方法,用於對這些屬性的訪問
3) 在賦值和取值方法中,加入對屬性的存取限制
為了實現良好的封裝,我們通常將類的成員變量聲明為private,在通過public方法來對這個變量來訪問。對一個變量的操作,一般有讀取和賦值2個操作,,我們分別定義2個方法來實現這2個操作,一個是getXX(XX表示要訪問的成員變量的名字)用來讀取這個成員變量,另一個是setXX()用來對這個變量賦值。
下面我們來看下這個例子:
public class Husband {
/*
* 對屬性的封裝一個人的姓名、性別、年齡、妻子都是這個人的私有屬性
*/
private String name;
private String sex;
private int age;
private Wife wife;
/*
* setter()、getter()是該對象對外開發的接口
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setWife(Wife wife) {
this.wife = wife;
}
}
Java繼承是面向對象的最顯著的一個特征。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。JAVA不支持多繼承,單繼承使JAVA的繼承關系很簡單,一個類只能有一個父類,易於管理程序,父類是子類的一般化,子類是父類的特化(具體化)
繼承所表達的就是一種對象類之間的相交關系,它使得某類對象可以繼承另外一類對象的數據成員和成員方法。若類B繼承類A,則屬於B的對象便具有類A的全部或部分性質(數據屬性)和功能(操作),我們稱被繼承的類A為基類、父類或超類,而稱繼承類B為A的派生類或子類。
繼承避免了對一般類和特殊類之間共同特征進行的重復描述。同時,通過繼承可以清晰地表達每一項共同特征所適應的概念范圍——在一般類中定義的屬性和操作適應於這個類本身以及它以下的每一層特殊類的全部對象。運用繼承原則使得系統模型比較簡練也比較清晰。
1) 繼承關系是傳遞的。若類C繼承類B,類B繼承類A(多繼承),則類C既有從類B那裡繼承下來的屬性與方法,也有從類A那裡繼承下來的屬性與方法,還可以有自己新定義的屬性和方法。繼承來的屬性和方法盡管是隱式的,但仍是類C的屬性和方法。
2) 繼承提供了軟件復用功能。若類B繼承類A,那麼建立類B時只需要再描述與基類(類A)不同的少量特征(數據成員和成員方法)即可。這種做法能減小代碼和數據的冗余度,大大增加程序的重用性。