繼承
Java繼承是面向?qū)ο蟮淖铒@著的一個(gè)特征.繼承是從已有的類中派生出新的類,新的類能吸收已有類的數(shù)據(jù)屬性和行為,并能擴(kuò)展新的能力
JAVA不支持多繼承,單繼承使JAVA的繼承關(guān)系很簡(jiǎn)單,一個(gè)類只能有一個(gè)父類,易于管理程序
比如:可以先定義一個(gè)類叫車,車有以下屬性:車體大小,顏色,方向盤,輪胎,而又由車這個(gè)類派生出轎車和卡車兩個(gè)類,為轎車添加一個(gè)小后備箱,而為卡車添加一個(gè)大貨箱.
繼承所表達(dá)的就是一種對(duì)象類之間的相交關(guān)系,它使得某類對(duì)象可以繼承另外一類對(duì)象的數(shù)據(jù)成員和成員方法,若類B繼承類A,則屬于B的對(duì)象便具有類A的全部或部分性質(zhì)(數(shù)據(jù)屬性)和功能(操作),我們稱被繼承的類A為父類,而稱繼承類B為A的子類.
特點(diǎn)
繼承關(guān)系是傳遞的.若類C繼承類B,類B繼承類A(多層繼承),則類C既有從類B那里繼承下來的屬性與方法,也有從類A那里繼承下來的屬性與方法,還可以有自己新定義的屬性和方法.繼承來的屬性和方法盡管是隱式的,但仍是類C的屬性和方法.繼承是在一些比較一般的類的基礎(chǔ)上構(gòu)造,建立和擴(kuò)充新類的最有效的手段.
實(shí)例:父類
public class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public Person() {
System.out.println("Person init");
}
public void eat(){
}
public static void run(){
System.out.println("run");
}
}
實(shí)例:子類
public class Teacher extends Person{
private int number;
public Teacher() {
System.out.println("Teacher init");
}
public Teacher(int age, String name, int number) {
super(age, name);
this.number = number;
}
@Override
public void eat() {
super.eat();
System.out.println(getName());
}
public static void run(){
System.out.println( "teacher run");
}
}
例子:使用類
public class Main {
public static void main(String[] args) {
// write your code here
Teacher teacher = new Teacher(18,"老師",99);
teacher.eat();
Teacher.run();
System.out.println(teacher.haha);
}
}
繼承的關(guān)鍵字extends
類的繼承是通過關(guān)鍵字extends來實(shí)現(xiàn),類只能單一繼承 子類中就是繼承父類里的變量和方法 父類的構(gòu)造凼數(shù)沒有被繼承,這里所說的意思是指在實(shí)例化子類的對(duì)象時(shí),在new后面不能調(diào)用父類的構(gòu)造凼數(shù),但是可以在子類的構(gòu)造凼數(shù)里使用super來調(diào)用父類的構(gòu)造凼數(shù),如果沒有寫super這句調(diào)用,子類會(huì)自動(dòng)調(diào)用父類無參的構(gòu)造凼數(shù)(但要確保無參構(gòu)造凼數(shù)存在,否則會(huì)出錯(cuò)) 可以new一個(gè)子類的對(duì)象賦給一個(gè)父類的變量,當(dāng)通過這個(gè)父類的變量執(zhí)行方法時(shí),其實(shí)是執(zhí)行的子類的方法