天天看點

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

群名:人生苦短,我學程式設計

歡迎大家加入我們,一起交流技術!!!