1. 程式人生 > >Java中的方法過載應用

Java中的方法過載應用

一 方法過載介紹
如果一個類中包含了兩個或兩個以個以上的方法名相同,但形參列表不同,則稱為方法過載。

二 方法過載應用
1 程式碼示例

public class Overload
{
	// 下面定義了兩個test()方法,但方法的形參列表不同
	// 系統可以區分這兩個方法,這種被稱為方法過載
	public void test()
	{
		System.out.println("無引數");
	}
	public void test(String msg)
	{
		System.out.println("過載的test方法 " + msg);
	}
	public static void main(String[] args)
	{
		Overload ol = new Overload();
		// 呼叫test()時沒有傳入引數,因此係統呼叫上面沒有引數的test()方法。
		ol.test();
		// 呼叫test()時傳入了一個字串引數,
		// 因此係統呼叫上面帶一個字串引數的test()方法。
		ol.test("hello");
	}
}

2 執行結果
無引數
過載的test方法 hello
3 結果分析
雖然兩個test的方法名相同,但因為他們的形參列表不同,所以系統可以正常區分這兩個方法。
 
三 過載方法裡包含個數可變的形參
1程式碼示例

public class OverloadVarargs
{
	public void test(String msg)
	{
		System.out.println("只有一個字串引數的test方法 ");
	}
	// 因為前面已經有了一個test()方法,test()方法裡有一個字串引數。
	// 此處的長度可變形參裡不包含一個字串引數的形式
	public void test(String... books)
	{
		System.out.println("****形參長度可變的test方法****");
	}
	public static void main(String[] args)
	{
		OverloadVarargs olv = new OverloadVarargs();
		// 下面兩次呼叫將執行第二個test()方法
		olv.test();
		olv.test("aa" , "bb");
		// 下面將執行第一個test()方法
		olv.test("aa");  //a
		// 下面呼叫將執行第二個test()方法
		olv.test(new String[]{"aa"});   //b
	}
}

 2執行結果
****形參長度可變的test方法****
****形參長度可變的test方法****
只有一個字串引數的test方法
****形參長度可變的test方法****

當註釋掉第1個test方法,執行結果如下:
****形參長度可變的test方法****
****形參長度可變的test方法****
****形參長度可變的test方法****
****形參長度可變的test方法****
3結果分析
當呼叫a處程式碼時,系統會執行過載的test(String)方法,如果需要呼叫test(String... books)方法,又只想傳入一個字串引數,則可釆用b處程式碼重栽;而如果將第1個test方法註釋掉,所有的test呼叫都過載第2個test方法。基於以上分析,大部分時候並不推薦過載個數可變的方法,它容易降低程式的可讀性。

相關推薦

java方法過載方法重寫分析

      方法重寫又稱方法覆蓋。 (2)若子類中的方法與父類中的某一方法具有相同的方法名、返回型別和引數表,則新方法將覆蓋原有的方法。 如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。 (3)子類函式的訪問修飾許可權不能少於父類的; 下面是重寫的例子: class Person//

Java方法過載應用

一 方法過載介紹如果一個類中包含了兩個或兩個以個以上的方法名相同,但形參列表不同,則稱為方法過載。 二 方法過載應用1 程式碼示例 public class Overload { // 下面定義了

Java方法重寫的應用

style void blog gpo sde 一模一樣 main 直接 body 方法重寫的應用   當子類需要父類的功能,而功能的主體子類還有自己特有的內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類自己特有的內容。 1 /* 2 方

java方法重寫和過載的那些事兒

1.重寫和過載分別是什麼意思 重寫(Override): 重寫是子類重新定義了父類的同名同參方法,覆蓋了父類的方法,因此,我們也把這種方式叫做“覆寫”。 過載(Overload): 過載是同一個類中,宣告的方法名字相同,但是引數不同的個方法,通過呼叫時傳不同的引數來達到呼叫名

java方法過載與重寫

過載:方法的過載,是要解決什麼問題呢?我個人認為是要解決方法名的問題.也就是說,要定義一個加法的方法.我只要用名稱add就好,至於裡面的是引數型別是double還是float,有幾個引數,都不是我關心的事情,我關心的是,我要使用的是add這個方法.至於引數肯定是隨便我來定義

Java方法過載和重寫的區別

一、方法的過載 在同一個類中,方法名相同引數列表不同的方法之間構造過載關係。 方法過載的主要形式: ①引數的個數不同 ②引數的型別不同 ③引數的順序不同 判斷方法是否過載的核心:判斷呼叫方法能否加以區分。 參考:java.io.PrintStrea

java方法過載及注意事項

/*方法的過載特性(overload)在同一個類中,允許出現同名的方法,只要方法的引數列表不同即可,這就是方法的過載引數列表不同:引數個數不同,資料型別不同,順序不同方法過載的注意事項1.引數列表必須相同2.過載和引數變數名無關3.過載和返回值型別無關4.過載和修飾符無關技巧

java方法過載與重寫的區別

    (1) 父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。 (adsbygoogle = window.ads

JAVA方法重寫和過載的區別

JAVA中方法的過載與重寫的區別 過載 1. 方法過載是讓類以統一的方式處理不同型別資料的一種手段。多個同名函式同時存在,具有不同的引數個數/型別。過載Overloading是一個類中多型性的一種表現。 2. Java的方法過載,就是在類中可以建立多個方法,它們具有相同的

java方法總結(每周更新)

實例 參數 創建 方法 get ack bject 子類 generate 1、URLEncoder.encode(username,"utf-8")將“utf-8”編碼的username先解碼,然後再采用URL編碼 2、URLDecoder.decode(autoLogi

java方法調用在內存的體現

壓入 ble borde dbo 才會 執行 lsp 過程 執行過程 在java中,方法以及局部變量(即在方法中聲明的變量)是放在棧內存上的。當你調用一個方法時,該方法會放在調用棧的棧頂。棧頂的方法是目前正在執行的方法,直到執行完畢才會從棧頂釋放。我們知道,棧是一種執行”先

Java方法的重載和重置(覆蓋)的區別

設置 同時存在 一個 return 同名方法 區分 返回 重置 參數順序 簡單來說,重載就是在同一類中允許同時存在一個以上的同名方法,只要這些方法的參數個數或類型不同即可,而重置(覆蓋)是子類重新定義父類中己經定義的方法,即子類重寫父類方法。 方法的重載 方法的重載就是在同

Java的UDP應用

地址 con 設置 安全 實現 端口 body proto ddr 我在《JavaSE項目之聊天室》中通過遵守TCP協議的ServerSocket與Socket實現了聊天室的群聊窗口。同時,在介紹OSI與TCP/IP參考模型時,也曾提及TCP與UDP(全稱User Data

Java方法重寫的兩個面試題

col class 返回 load 重寫 this strong gpo 不同 1:方法重寫和方法重載的區別?方法重載能改變返回值類型嗎?   方法重寫:     在子類中,出現和父類中一模一樣的方法聲明的現象。(包含方法名、參數列表和返回值類型都一樣)   方法重載

Java方法遞歸與File例題

方法遞歸 File類 不死神兔 遞歸刪除文件 輸出文件後綴名固定的文件絕對路徑 1、有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數為多少?(不死神兔)(1)數組方式 package 遞歸.作業; publi

TODO java 學習:在java啟動其他應用,由jenkins想到的

服務 com 其他 定義 第三方應用 order 其他應用 mman key 在jenkins的實踐中遇到了一個問題:   我的項目依賴其他第三方應用的地方比較多,而且會占用多個端口,如何處理端口和啟動/關閉第三方應用成了難題。   初級解決方案:在服務端上面寫一堆bat文

Java方法重寫和方法重載

自己的 track 增強 父類 () fix content 使用 except 首先方法重寫和方法重載是建立在Java的面向對象的繼承和多態的特性基礎上而出現的。至於面向對象的繼承和多態的特性我就不在這裏多說了。繼承是指在一個父類的基礎再創建

java方法重載是什麽, 實際到底有什麽意義, 用處?請舉例

視頻 http dex [] sta 方法名 ret tro www. 7.3 方法重載(overload) (視頻下載) (全部書籍) 當幾個方法有相同的方法名,但參數個數不同或參數類型不同時,就涉及方法重載 方法重載有什麽意義呢?在公司裏編程,有時候一個

Java方法的定義與使用

一、方法的定義: 方法:指的是一段可以重複呼叫的程式碼(和C語言中的函式一樣) (注:這裡說的是直接在主方法中呼叫的方法) 方法的定義語法: public static 返回值型別 方法名 (引數) { //方法體 //返回值 } 如果返回值型別為void,則沒有返

java方法返回值前的<T>的作用

方法返回值前的<T>的左右是告訴編譯器,當前的方法的值傳入型別可以和類初始化的泛型類不同,也就是該方法的泛型類可以自定義,不需要跟類初始化的泛型類相同 我們通過一段程式碼比較來看下就明白了  class Show<T> { public void p