Java中 重載overload和重寫override(覆蓋)的區別

因爲最近學習的內容好多都有所相似的地方,自己腦子裏總是感覺很亂,所以今天在這裏梳理一下這兩個知識點,不到位、不準確的地方希望各位看官多多指教、不吝賜教

重載(Overload)

I .定義:在一個類中定義多個相同名稱的方法,即爲重載。
II. 要求:
1)方法名稱相同
2)參數列表不同
3)與訪問修飾符、返回值無關

public class TestOverload{
	public static void main(String[] args) {
		Student s = new Student();
		s.a();
		s.a("jack");
		s.a("tom", 18);
	}
}


class Student{
	String name;
	int age ;
	double score;
	***//同一個類中  方法名稱相同 參數列表不同構成重載 (參數類型、個數任何一個不同或者都不相同均構成重載)***
	**//與訪問修飾符、返回值類型均無關!!!**
	//無參方法
	public void a(){
		System.out.println("我是老大");
	}
	//一參方法    
	public String a(String name ){
		System.out.println("老二叫"+name);
		return name;
	}
	//兩參方法  
	 void a(String name , int age){
		System.out.println("一個"+age+"歲的"+"老三叫"+name);
	}
}

重寫(Override)

I.定義:又稱覆蓋,是子類繼承父類的屬性和方法後,子類的方法可能會因子類自身特點而特殊化,但又是子類所必須具有的方法,因此通過子類繼承父類後,重新寫一個新的方法,來達到覆蓋原有父類方法的目的。

II.要求:

  1. 方法名、參數表、返回值,必須與父類完全相同。
  2. 訪問修飾符應與父類相同或比父類更寬泛。

public class TestStudent{
	public static void main(String[] args) {
		Baby b = new Baby();
		b.drink();
	}
}


class Father{
	String name;
	int age ;
	public void drink(){
		System.out.println("father不需要喝奶");
	}

}
class Baby extends Father{
	public void drink(){
		System.out.println("baby需要喝奶");
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章