繼承
Java繼承是面向對象的最顯著的一個特征.繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,并能擴展新的能力
JAVA不支持多繼承,單繼承使JAVA的繼承關系很簡單,一個類只能有一個父類,易于管理程序
比如:可以先定義一個類叫車,車有以下屬性:車體大小,顏色,方向盤,輪胎,而又由車這個類派生出轎車和卡車兩個類,為轎車添加一個小后備箱,而為卡車添加一個大貨箱.
繼承所表達的就是一種對象類之間的相交關系,它使得某類對象可以繼承另外一類對象的數據成員和成員方法,若類B繼承類A,則屬于B的對象便具有類A的全部或部分性質(數據屬性)和功能(操作),我們稱被繼承的類A為父類,而稱繼承類B為A的子類.
特點
繼承關系是傳遞的.若類C繼承類B,類B繼承類A(多層繼承),則類C既有從類B那里繼承下來的屬性與方法,也有從類A那里繼承下來的屬性與方法,還可以有自己新定義的屬性和方法.繼承來的屬性和方法盡管是隱式的,但仍是類C的屬性和方法.繼承是在一些比較一般的類的基礎上構造,建立和擴充新類的最有效的手段.
實例:父類
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");
}
}
實例:子類
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);
}
}
繼承的關鍵字extends
類的繼承是通過關鍵字extends來實現,類只能單一繼承 子類中就是繼承父類里的變量和方法 父類的構造凼數沒有被繼承,這里所說的意思是指在實例化子類的對象時,在new后面不能調用父類的構造凼數,但是可以在子類的構造凼數里使用super來調用父類的構造凼數,如果沒有寫super這句調用,子類會自動調用父類無參的構造凼數(但要確保無參構造凼數存在,否則會出錯) 可以new一個子類的對象賦給一個父類的變量,當通過這個父類的變量執行方法時,其實是執行的子類的方法