java中重載與覆蓋

什麼是重載?
重載(Overload)表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不相同。
什麼是覆蓋?
覆蓋(Override)是指子類對父類方法的一種重寫,只能比父類拋出更少的異常,訪問權限不能比父類的小,被覆蓋的方法不能是 private 的,否則只是在子類中重新定義了一個新方法。

重載的案例:

package exercise;
public class information {
	public void method(String name) {
		System.out.println("姓名是:"+name);
	}
	public void method(int age) {
		System.out.println("年齡是:"+age);
	}
	public void method(String name,int age) {
		System.out.println("姓名是:"+name);
		System.out.println("年齡是:"+age);
	}
	public void method(int age,String name) {
		System.out.println("年齡是:"+age);
		System.out.println("姓名是:"+name);
	}
	public static void main(String[] args) {
		new information().method("高飛");
		new information().method(18);
		new information().method("高飛",18);
		new information().method(18,"高飛");
	}
}

/*
運行結果:
姓名是:高飛
年齡是:18
姓名是:高飛
年齡是:18
年齡是:18
姓名是:高飛
*/

總結:使用重載能夠同時解決參數類型不同,參數個數不同的,參數順序不同的問題。

重載的規則

  1. 在使用重載時只能通過相同的方法名、不同的參數形式實現。不同的參數類型可以是不同的參數類型,不同的參數個數,不同的參數順序(參數類型必須不一樣)。
  2. 不能通過訪問權限、返回類型、拋出的異常進行重載。
  3. 方法的異常類型和數目不會對重載造成影響。

覆蓋的案例:

package exercise;
public class animal {
	public void run() {
		System.out.println("動物會跑");
	}
	public void eat() {
		System.out.println("動物會吃飯");
	}
	private void breath() {
		System.out.println("動物會呼吸");
	}
}

package exercise;

public class fish extends animal{
	public void run() {
		System.out.println("魚在水裏遊");
	}
	public void breath() {
		System.out.println("魚在水裏呼吸");
	}
}

package exercise;
public class main_x{
	public static void main(String[] args) {
		var f=new fish();
		f.run();
		f.eat();
		f.breath();
	}
}

/*
運行結果:
魚在水裏遊
動物會吃飯
魚在水裏呼吸
*/

總結:代碼中的animal父類中的breath方法是私有的,那麼在子類中是不能繼承這個方法的,同時在對他重寫時,也只是創建了一個新的方法,不構成覆蓋。

覆蓋的規則:

  1. 重寫方法的參數列表必須完全與被重寫的方法的相同,否則不能稱其爲重寫而是重載。
  2. 重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符.
  3. 重寫的方法的返回值必須和被重寫的方法的返回一致。
  4. 重寫的子類只能比父類拋出更少的異常。
  5. 靜態方法不能被重寫,可以被重載。

來一波,推送吧!
羣號:781121386
羣名:人生苦短,我學編程
歡迎大家加入我們,一起交流技術!!!

發佈了38 篇原創文章 · 獲贊 133 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章