1. 程式人生 > >JAVA學習(七):方法重載與方法重寫、thiskeyword和superkeyword

JAVA學習(七):方法重載與方法重寫、thiskeyword和superkeyword

格式 hello new 初始 per 而且 方法重寫 學習 方式

方法重載與方法重寫、thiskeyword和superkeyword


1、方法重載


重載可以使具有同樣名稱但不同數目和類型參數的類傳遞給方法。

註:

一是重載方法的參數列表必須與被重載的方法不同,而且這樣的不同必須足以清楚地確定要調用哪一個方法;

二是重載方法的返回值類型能夠與被重載的方法同樣,也能夠不同,可是僅僅有返回值類型不同不能表示為重載。

比如,最經常使用的println()方法在JDK的java.io.PrintStream中定義了十幾種形式的重載,經常使用格式例如以下:

public void println(int i) {....}

public void println(double i) {....}

public void println(String i) {....}

/**********************************************************
 * "方法重載"的用法及其演示樣例代碼*/

public class OverloadRewrite
{
	void num(int i){
		System.out.println("接收到的是int類型參數,其值="+i);
	}
	void num(float j){
		System.out.println("接收到的是float類型參數。其值="+j);
	}
	void num(String k){
		System.out.println("接收到的是String類型參數,其值="+k);
	}
	public static void main(String [] args) {
		OverloadRewrite a=new OverloadRewrite();
		a.num(100);
		a.num(100.20f);
		a.num("Hello!");
		
	}
}


2、方法重寫


當子類繼承父類時,能夠擁有父類中的成員方法和成員變量,在子類創建獨有的成員就可以。可是,假設創建一個與父類中同樣名稱、同樣返回值類型、同樣參數列表的方法,僅僅是方法體中的實現不同,以實現不同於父類的功能,這樣的方式被稱為方法重寫或方法覆蓋。

註:

一是返回值類型與參數列表必須與被重寫的返回值類型和參數列表同樣。否則不能稱為重寫。

二是訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public > protected > default > private);

三是重寫方法一定不能拋出新的檢查異常或者比被重寫方法聲明更加寬泛的檢查型異常。

比如,父類的一個方法聲明了一個檢查異常IOException,在重寫這種方法時,就不能拋出Exception,僅僅能拋出IOException的子類異常。能夠拋出非檢查異常。


/**********************************************************
 * "方法重寫"的用法及其演示樣例代碼*/

public class OverloadRewrite
{
	public String Name;
	public String Address;
	public OverloadRewrite(String name,String address) {	//構造方法
		this.Name=name;
		this.Address=address;
	}	
	public String toString() {	//重寫toString
		return "我的名字是:"+Name+",產地是:"+Address;
	}
		public class sichuancai extends OverloadRewrite{	//	繼承
		public String Detail;
		public sichuancai(String name,String address,String detail){	//構造方法
			super(name, address);	//super調用父類對應的構造方法
			this.Detail=detail;
		}
	}	
//	public String toString() {	//重寫toString
//		return "我的名字是:"+Name+"。產地是:"+Address+",特點是:"+this.Detail;
//	}
	public static void main(String [] args) {
		OverloadRewrite food=new OverloadRewrite("面條", "意大利");
		System.out.println(food);
		sichuancai sichuan=food.new sichuancai("麻辣燙", "成都", "麻辣和香辣");
		System.out.println(sichuan);
	}
}


3、thiskeyword


thiskeyword可用於在不論什麽實例方法內指向當前對象,也可指向對其調用當前方法的對象,或者在須要當前類型對象引用時使用。

註:當一個類的屬性名或成員變量與訪問該屬性的方法參數名同樣時,則須要使用thiskeyword來訪問類中的屬性。以區分類的屬性和方法中的參數。


4、superkeyword


因為子類不能繼承父類的構造方法,因此要調用父類的構造方法,必須在子類的構造方法的第一行使用super()。

super()方法會調用父類對應的構造方法,完畢子類對象的部分初始化工作。

註:程序在下面兩種情況下須要使用super()keyword:

一是在類的構造方法中。通過super語句調用該類的父類的構造方法。

二是在子類中訪問父類中的成員。




JAVA學習(七):方法重載與方法重寫、thiskeyword和superkeyword