重載(overloading)和重寫(overriding)

重載和重寫都是針對方法的概念,在弄清楚這兩個概念之前,我們先來了解一下什麼叫方法的型構(英文名是signature,有的譯作“簽名”,雖然它被使用的較爲廣泛,但是這個翻譯不準確的)。型構就是指方法的組成結構,具體包括方法的名稱和參數,涵蓋參數的數量類型以及出現的順序,但是不包括方法的返回值類型,訪問權限修飾符,以及abstract、static、final等修飾符。

1.比如下面兩個就是具有相同型構的方法:

      public void method(int i, String str) {
 
	}
	public String method(int i, String str) {

	}
2.下面兩個就是具有不同型構的方法

       public void method(int i, String str) {

	}
	public void method(int i, double b) {

	}
重寫,英文名是overriding,是指在繼承情況下,子類中定義了與其基類中方法具有相同型構的新方法,就叫做子類把基類的方法重寫了。這是實現多態必須的步驟。
重載,英文名是overloading,是指在同一個類中定義了一個以上具有相同名稱,但是型構不同的方法。在同一個類中,是不允許定義多於一個的具有相同型構的方法的。

一.方法的重載:

1.返回類型可以不同

你可以任意地改變重載方法的返回類型,只要所有的覆蓋使用不同的參數即可

2.不能只改變返回類型

package cn.edu.hpu.example;

public class Haha {
	
	public int sum(int num1, int num2) {
		return num1 + num2;
	}

	public double sum(int num1, double num2) {
		int sum = num1 + (int) num2;
		return sum + 2;
	}
}

二,方法的重寫

一個類M繼承另一個類N,N中有一個方法A,這時你在M寫了一個方法B,方法B的名字、返回值以及參數都和A一樣,此時B重寫了A。

public class Father {
	public void Song() {
		System.out.println("this is father's sing");
	}
}

public class Son extends Father{

	@Override
	public void Song() {
		// TODO Auto-generated method stub
		System.out.println("this is son' sing");
	}

}

public static void main(String[] args) {
		Father f = new Father();
		f.Song();
		Father s = new Son();
		s.Song();
	}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章