大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java教程
Java標識符與關鍵字
Java變量
Java數據類型
Java運算符
Java控制語句
Java方法
Java面向對象
Java對象的創建和使用
Java封裝
Java中static和this
Java繼承
Java方法覆蓋和多態
Java super
Java基礎練習題

Java方法重載

關于方法重載是什么,以及怎么進行重載,這些我們目前先不去研究,先來看看以下代碼不使用方法重載機制,存在哪些缺點?

public static void main(String[] args) {
	int x1 = 10;
	int x2 = 20;
	int retValue1 = sumInt(x1 , x2);
	System.out.println(x1 + "+" + x2 + "=" + retValue1);
	long y1 = 10L;
	long y2 = 20L;
	long retValue2 = sumLong(y1 , y2);
	System.out.println(y1 + "+" + y2 + "=" + retValue2);
	double z1 = 10.0;
	double z2 = 20.0;
	double retValue3 = sumDouble(z1, z2);
	System.out.println(z1 + "+" + z2 + "=" + retValue3);
}
public static int sumInt(int a , int b){
	return a + b;
}
public static long sumLong(long a , long b){
	return a + b;
}
public static double sumDouble(double a , double b){
	return a + b;
}

運行結果如下圖所示:

Java技術架構

圖7-12:沒有重載,分析缺點

我們可以看到以上三個方法功能“相似”,都是求和,只不過參與求和的數據類型不同,因此定義了三個方法,分別起了三個不同的方法名。這種方式會增加程序員編程的壓力,因為程序員起碼要記憶三個方法名,另外代碼也不是很美觀。怎么解決呢?我們來看看使用方法重載機制之后會是怎樣,請看以下代碼以及運行結果:

public static void main(String[] args) {
	int x1 = 10;
	int x2 = 20;
	int retValue1 = sum(x1 , x2);
	System.out.println(x1 + "+" + x2 + "=" + retValue1);
	long y1 = 10L;
	long y2 = 20L;
	long retValue2 = sum(y1 , y2);
	System.out.println(y1 + "+" + y2 + "=" + retValue2);
	double z1 = 10.0;
	double z2 = 20.0;
	double retValue3 = sum(z1, z2);
	System.out.println(z1 + "+" + z2 + "=" + retValue3);
}
public static int sum(int a , int b){
	return a + b;
}
public static long sum(long a , long b){
	return a + b;
}
public static double sum(double a , double b){
	return a + b;
}

運行結果如下圖所示:

Java應用

圖7-13:使用重載機制

以上代碼使用了方法重載機制,我們可以看到,三個“功能相似”的方法名字都叫做sum,只不過方法的形參不同,這樣對于程序員來說,調用方法時所需要記憶的方法名更少一些,代碼更加美觀一些。

接下來我們正式的研究一下方法的重載機制:什么是方法重載?什么情況下我們考慮使用方法重載?在代碼角度來看,滿足什么條件的時候構成方法重載?

那么,什么是方法重載呢?方法重載(overload)是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數的類型或參數的個數。調用重載方法時,Java編譯器能通過檢查調用的方法的參數類型和個數選擇一個恰當的方法。方法重載通常用于創建完成一組任務相似但參數的類型或參數的個數不同的方法。調用方法時通過傳遞給它們的不同個數和類型的實參來決定具體使用哪個方法。

什么情況下我們考慮使用方法重載呢?在同一個類當中,如果多個功能是相似的,可以考慮將它們的方法名定義的一致,使用方法重載機制,這樣便于程序員的調用,以及代碼美觀,但相反,如果兩個方法所完成的功能完全不同,那么方法名也一定要不一樣,這樣才是合理的。

代碼滿足什么條件的時候構成方法重載呢?滿足以下三個條件:

● 在同一個類當中。

● 方法名相同。

● 參數列表不同:個數不同算不同,順序不同算不同,類型不同也算不同。

接下來我們來看看以下程序哪些方法構成了方法重載,哪些沒有:

Java編程

圖7-14:哪些方法重載了,哪些沒有

編譯結果如下圖所示:

Java系統開發

圖7-15:編譯錯誤信息提示

通過觀察以上代碼以及測試結果我們得知,方法5和方法4是一樣的,這不是方法重載,這叫“方法重復(哈哈)”,因為之前我們就說過方法形參中起決定性作用的是參數的數據類型,參數的名字隨意,因為每一個形參都是局部變量,變量名自然是隨意的。其中方法6和方法1相同,顯然方法的重載和方法的返回值類型沒有關系,這也是合理的,因為之前我們提過,方法執行結束之后的返回值我們可以接收也可以不接收。另外方法7和方法1也無法構成重載,顯然方法重載和修飾符無關。

總之,方法1和方法2要想構成方法重載,首先它們在同一個類當中,方法名一樣,參數列表不同(類型、個數、順序),這樣java虛擬機在運行的時候就可以分清楚去調用哪個方法了。其實,最終要調用哪個方法,還是取決于調用的時候傳遞的實際參數列表。所以在java編程中要區分兩個方法,首先看方法名,如果方法名一致,則繼續看它們的形式參數列表。

接下來我們來看一下方法重載在實際開發中的應用,你有沒有覺得每一次輸出的時候“System.out.println();”這行代碼很麻煩,我們來封裝一個工具類,請看以下代碼:

public class U {
public static void p(){
	System.out.println();
}
public static void p(int data){
	System.out.println(data);
}
public static void p(long data){
	System.out.println(data);
}
public static void p(float data){
	System.out.println(data);
}
public static void p(double data){
	System.out.println(data);
}
public static void p(boolean data){
	System.out.println(data);
}
public static void p(char data){
	System.out.println(data);
}
public static void p(String data){
	System.out.println(data);
}
}
public class UTest {
	public static void main(String[] args) {
		U.p("hello world!");
		U.p(10);
		U.p(9.0);
		U.p(false);
		U.p('國');
		int a = 10;
		int b = 20;
		int c = a + b;
		U.p(a + "+" + b + "=" + c);
	}
}

運行結果如下圖所示:

測試工具類

圖7-16:測試工具類U

看到以上的代碼,你是不是感覺以后要打印數據到控制臺就很方便了,代碼再也不需要寫這么多“System.out.println();”,你只需要“U.p();”,當然,你需要把U.java文件編譯生成的U.class文件拷貝到你的硬盤當中,一直攜帶著,什么時候需要的話,把U.class文件放到classpath當中就可以使用了。

全部教程
主站蜘蛛池模板: 68久久久久欧美精品观看 | 久久久久久久99精品免费观看 | 亚洲大胆精品337p色 | 国产精品99久久久久久宅男 | 四虎4hutv永久在线影院 | 一区二区三区四区产品乱码伦 | www.4虎影院| 欧美一区二区三区网站 | 997在线观看视频国产 | 国产精品日韩一区二区三区 | 精品乱码一区二区三区四区 | 国产精品99久久99久久久看片 | 波多野结衣三区 | 在线xxxx | 九九福利视频 | 目韩一区二区三区系列片丶 | 欧美日本一道免费一区三区 | 色青青草原桃花久久综合 | 欧美一级永久免费毛片在线 | 成人免费www在线高清观看 | 国产精品美女一区二区三区 | 亚洲欧美日韩精品中文乱码 | 四虎精品免费国产成人 | 色综合h | 成人a视频高清在线观看 | 亚洲精品久久久成人 | 4hu四虎永久网址 | 日韩一级欧美一级一级国产 | 久久国产精品亚洲va麻豆 | 国产网红自拍 | 久久精品免视看国产明星 | 成人欧美精品一区二区不卡 | 成人精品区 | 中文字幕一区二区日产乱码 | 成年人精品视频 | 日本一级片在线观看 | 中国欧美一级毛片免费 | 香蕉视频精品 | 四虎影视成人精品 | 成人精品第一区二区三区 | 四虎中文 |