本文以一條龍的形式一次性解決問題。
類是廣泛的概念,表示一個有共同性質的群體。如:人類。
代碼:
// 聲明一個類“Human”
class Human{
private String name;
public String getName(){
return name;
}
public void setName(String value){
this.name = value;
}
//......
}
對象指的是具體的一個實實在在的東西。如、張三、李四。
代碼:
Human zhangsan = new Human();
圖:

圖中我們怎么創建張三和李四呢??我們前面的代碼好像還沒涉及,恩好,看下面
Human human = new Human();
程序執行到這里之后,java虛擬機將會在內存中創建一個 Human 對象,并將這個對象的引用賦給 human 變量。
接著:human.setName("張三"); human.setName("李四");好了對象(實例)創建好了,呵呵!
圖:

“人”是一個基類,則“男人”是“人”的一個子類。如果“張三”是一個“男人”,也就是說“張三”是“男人”的一個對象,那么顯然“張三”也是“人”這個基類的一個對象。
class nanren extends human(String args[ ]){
//.............
}
方法是類的行為,如人會笑、會坐、會走路 一樣。
圖:

代碼:
zhangsan.go();zhangsan.xiao();zhangsan.shuijiao();zhangsan.qita();
接口只定義了一些方法,而沒有實現這些方法,它規定了實現接口的類必須具備的方法(能力),它只是一個規定。
我們規定:只要是人就可以走路、笑、睡覺、做其他的事,于是我們用代碼實現這個規定
public interface you_are_human{
public void go();
public void xiao();
public void shuijiao();
public void qita();
}
這時,張三想做人,但他只想擁有走路和笑的能力。首先,他必須聲明自己是人,也就是前面對人的規定,
然后想做什么由他自己決定:
public class zhangsan extends Human implements you_are_human{
public void go(){
// ......
}
public void xiao(){
// ......
}
}
使用的時候:
you_are_human zhangsan = new you_are_human();
zhangsan.go();
zhangsan.xiao();
那有的人就會問,這和前面我定義類有什么區別;
這是因為:java的類的繼承是從上到下的,爺爺1 》老爸1 》兒子1
爺爺2 》老爸2 》 兒子2
而不能是:爺爺2 》 兒子1
這樣就亂套了 ,是不,鬧笑話;所以,類規定了不繼承關系,防止亂套,使結構變得清晰。
所以,當我們使用樹型結構時,使用類。
由于,在生活中還有許多這樣的情況,如,張三是中國人,那張三他也是美國人雙重身份。
再如,李四是java工程師,也是廚師。
那怎么辦??
我們可以這么做:
規定多個身份
public interface zhengjian{
interface China(){
public void China_L(){
//.................
}
}
interface USA(){
public void USA_L(){
//...........
}
}
public class zhangsan extends zhengjian implements Chna , USA{
public void China_L(){
// ......
}
public void USA_L(){
// ......
}
}
當張三去美國時,老美叫他拿個綠證來看:
zhangsan.USA_L();
呵呵,再舉個例子大家就清楚了:
HP有“三星”和“IBM”兩種,我通常而言不可能一個HP是既是“三星”又是“IBM”的吧~~~~~~~~類
“家庭式”和“辦公式”兩種,但往往我們能買到擁有兩種款式相結合廠品是吧 ~~~~~~~~~~~接口
中國人說起來,類有點“封建世襲制”,接口有點“違反常理亂倫”,呵呵
開個玩笑。
這樣說完大家再去看些相關文章就會覺得很容易了 呵呵
剩下抽象類就簡單了,那是抽象類(abstract)他還是類(class),只不過是抽象的罷了。
抽象類對某具體類型的部分實現------抽象類是對具體的抽象方法特征包括:方法的名字、參數的數目、參數的類型。
不包括:返回類型、參數名字、和拋出的異常。
java接口(抽象類)用來聲明一個新的類型,Java設計師應當主要使用接口和抽象類將軟件單位與內部和外部耦合(軟件工程中內容)起來。
在理想的情況下,一個具體類應當只實現接口和抽象類中聲明的方法,而不應當給出多余的方法!
抽象類僅提供一個類的部分實現。抽象類可以有實例變量、以及一個或多個構造函數。
人這個概念夠抽象了吧!
public abstract class Human{...}
男人也是
public abstract class man{...}
有一點必須講清:接口不能繼承抽象類,接口只能繼承實實在在的類,
如,我可以為某個HP廠品(類)規定一種規范(接口),但由于各個廠家推陳出新,所以,我很難對某一類型廠品規定,“家庭型hp”就很難下個結論(接口)。
從軟件優化角度來考慮類和接口問題。類class條理清楚內聚性好,用于軟件模塊內部實現(汽車的內部機
械);接口interface很靈活耦合性好,用于模塊外部實現(如,汽車操作板的按鈕)。從而實現強內聚、松耦合
的軟件設計思想。