java中繼承

ExcesiveYue發表於2017-12-25

前兩個月寫了一篇文章多型,,,,卻忘記了繼承,以下簡要概括什麼是繼承

 

1 什麼是繼承?

子類繼承父類的特徵和行為,使得子類具有父類的各種屬性和方法。或子類從父類繼承方法,使得子類具有父類相同的行為

 

 

2 為什麼需要繼承?什麼時候應該繼承?

使用繼承可以有效實現程式碼複用,避免重複程式碼的出現。

當兩個類具有相同的特徵(屬性)和行為(方法)時,可以將相同的部分抽取出來放到一個類中作為父類,其它兩個類繼承這個父類。

繼承實現了物件導向的原則

 

 

3 如何實現繼承?

java語言中,用extends(擴充套件)關鍵字來表示一個類繼承了另一個類。

在父類中只定義一些通用的屬性和方法。

注意只能繼承一個父類

子類自動繼承父類的屬性和方法,子類中可以定義特定的屬性和方法。或子類重新定義父類的屬性、重寫父類的方法可以獲得與父類不同的功能。

 

1  繼承只支援單繼承

2 多個類可以繼承一個父類

3 可以實現多層繼承 A extends B extends C

 

4 什麼是方法重寫?注意方法重寫和方法過載區別

如果在子類中定義的一個方法,名稱、返回型別及引數列表正好與父類中某個方法的名稱、返回型別及引數列表相匹配那麼可以說,子類的方法重寫了父類的方法。

方法重寫在不同類,是實現多型的必要條件。

 

方法過載是在一個類中名稱、返回型別及引數列表,一定要與同名的不相同,才能達到過載目的

 

5 super關鍵字的用法和位置,super關鍵字呼叫父類的構造方法,super關鍵字呼叫父類的方法?

1.在子類的構造方法中,通過super關鍵字呼叫父類的構造方法。

2.如果子類中重寫了父類的方法,可以通過super關鍵字呼叫父類的方法

 以下舉例super如何使用


public class Student {
	int number;
    String name;
    public Student() {
		// TODO Auto-generated constructor stub
	}
	public Student(int number, String name) {
		super();
		this.number = number;
		this.name = name;
	}
    @Override
    public String toString() {
    	// TODO Auto-generated method stub
    	return  name+number;
    }
    
}

public class Teacher  extends Student {
  String salary;
  public Teacher() {
	// TODO Auto-generated constructor stub
}
public Teacher(int number, String name, String salary) {
	super(number,name);
	this.salary = salary;
}
  @Override
	public String toString() {
		return super.toString()+this.salary;
	}
}


public class Test {
   public static void main(String[] args) {
	Student s1=new Student(12,"xiaoming");
	Teacher t1=new Teacher(22,"張","1000");
	System.out.println(s1.toString());
	System.out.println(t1.toString());
}
   
}


輸出結果為


 

 

 

位置注意:呼叫父類的構造方法的語句(super語句)必須是構造方法中的第一條語句

因為建立物件的時候,需要先建立父類物件,再建立子類物件。

注意:建立物件時,先建立父類物件,在建立子類物件。如果沒有顯示呼叫父類的構造方法,將自動呼叫父類的無參構造方法。

 

構造方法注意不要忘記寫無參構造方法因為如果只定義了有引數的構造方法,無參構造方法無法自動生成

 

6 一切類(祖先)Object

所有類都直接或者間接地繼承了java.lang.Object類,Object類中定義了所有的java物件都具有的相同行為,是所有類的祖先。

一個類如果沒有使用extends關鍵字,那

相關文章