java中父類與子類的關系以及使用
在java中規定:一個父類可以有多個子類,但是一個子類只能有一個父類。子類可以通過extends關鍵字來繼承父類。做個比較通俗的比喻,就像一個父親可以有多個親孩子,但是一個孩子只能有一個親生父親。
1.繼承以及重寫:子類繼承父類是對父類屬性和方法的全面繼承,同時子類在繼承了父類的方法后,可對父類的方法進行重寫。
public class Son extends Fat{
private int b;
private String h1;
public void sss() {
System.out.println("我要學好英語"); //在這我們對父類中的sss()方法進行了重寫
}
public void iii() {
System.out.println("今天天氣真好"); // 在這我們添加了子類特有的方法
}
}
class Fat{
public int a=5;
private String h;
public void sss() {
System.out.println("我要學好java");
}
}
2.父類用作對象的聲明類型,構造器用子類的構造器(有點類似於接口和實現類的對象的關系)。這樣使得我們的應用場景和范圍更為靈活和廣泛。我們知道一個父類可以有多個子類,這樣我們可以在聲明的時候用父類,在具體的構造器時,我們用子類。這時,這個新生成的對象是父類類型的對象,也就是說這個對象中目前只有父類的屬性和方法(如果子類重寫,則用子類重寫的方法)。如果我們需要調用子類中特有的方法和屬性,則我們需要將該對象強制轉換成子類類型的對象。看下面代碼
public class TestSon {
public static void main(String[] args) {
Fat s=new Son(); //我們在這進行了父類用作對象的聲明類型,構造器用子類的構造器。
s.sss(); //我們調用了對象中的sss()方法,為我們重寫過的方法
System.out.println(s.a); // 我們展示了父類中屬性a的值,此處為public(沒有進行封裝)
Son y=(Son)s; //將s對象轉化為Son類型的y對象
y.iii();; //這樣我們可以通過y對象來調用子類中特有的iii()方法。
int u=y.b; //同時我們也可以接受子類中特有的屬性b。
}
}
對這個知識點的理解和記憶中,我們可以用七個葫蘆娃和葫蘆娃爸爸(我假設的)來理解。假設葫蘆娃爸爸只有吃飯這一個技能包,七個葫蘆娃的技能點兒除了吃飯之外,分別還有比如噴火、噴火等技能包(每個人都不一樣)。故我們可以在用某一個對象時,可以先以葫蘆娃爸爸作為聲明類型,然后呢用具體的葫蘆娃進行構造。當我們在表達吃飯的動作(每個小葫蘆娃都要吃飯啊~~~)時,我們就可以用當前對象名,吃飯(方法)來表示。但是當需要用噴火(方法),我們就需要將這個對象轉化成葫蘆四娃類型的了(因為這個是他和葫蘆娃爸爸不一樣的地方,四娃特有)。
3.Object類是所有類的父類,其中有方法equals等方法。
