1. 程式人生 > >方法重寫與方法過載的區別

方法重寫與方法過載的區別

方法重寫(override):即方法覆蓋。指的是父子類中方法的關係。父類A中有方法method1,在子類中想要使用method1這個方法簽名而又要實現與父類method1方法不同的功能,這個時候就要用到方法重寫。即子類使用父類的方法簽名,但子類方法體與父類不同,實現的功能不同。

例子:

public class A {

	public void method1(){
		System.out.println("method1");
	}
}
public class SubA extends A{

	@Override
	public void method1() {
		// TODO Auto-generated method stub
		System.out.println("method1 in SubA");
	}

}

在A的子類SubA中重寫了A的method1方法,而兩個method1中輸出的語句不同。

方法過載(overload):同一個類中方法之間的關係。這裡要弄清楚如何區別是兩個方法簽名是否同一個方法的簽名。方法簽名的區分規則:方法簽名的區分是以方法的引數型別、排序與個數為標準的。如果兩個方法簽名有相同的引數型別、引數排序和引數個數,那麼這兩個方法使用的同一個簽名。在同一個類中兩個方法使用同一個方法簽名會報錯。而方法過載就是兩個方法使用了相同的方法名而方法的引數不一致。

舉例:

public class A {

	public void method1(){
		System.out.println("method1");
	}
	public void  method1(int i){
		System.out.println("method1 too");
	}
	
}



方法簽名是否與方法的返回值有關呢?

在eclipse做了一個例子:


報錯如下:

Duplicate method method1(int) in type A
錯誤的原因是多個方法method1被定義在類A中,也就數說方法的簽名是與方法的返回值無關的。

相關推薦

方法重寫方法過載區別

方法重寫(override):即方法覆蓋。指的是父子類中方法的關係。父類A中有方法method1,在子類中想要使用method1這個方法簽名而又要實現與父類method1方法不同的功能,這個時候就要用到方法重寫。即子類使用父類的方法簽名,但子類方法體與父類不同,實現的功能不

方法重寫方法重載的區別

並不是 情況下 以及 ioe 區分 的人 成員變量 因此 就會 一、方法重寫(0veriding) 在Java程序中,類的繼承關系可以產生一個子類,子類繼承父類,它具備了父類所有的特征,繼承了父類所有的方法和變量。 子類可以定義新的特征,當子類需要修改父類的一些方法進行擴展

C++學習筆記24,方法重寫方法隱藏

轉載請註明出處: 方法重寫.是指在子類中重新編寫父類中的虛函式的實現.要求子類中的函式必須跟父類中的原型一致. 包括返回值型別(協變返回型別不算)以及引數的數目,排列順序. #include &

方法過載方法重寫的概念和區別

方法過載:一個類中有一個方法A,你又在這個類中建立了一個方法B,方法B的名字和A一樣,返回值型別也一樣,但是引數的型別或個數不同,此時B過載了A。 例如: public class TestClass{ public int test(int i){return

方法重寫方法過載區別?

**方法過載:overload一個類中你有了一個方法A,在這個類中你又寫了一個方法B,方法A和方法B的方法名一樣,但引數不同,返回值型別不同,與返回值無關,此時方法B過載了方法A;引數不同體現在:(1): 引數型別不同;(2): 引數個數不同;(3): 引數順序不同;例如:public class TestC

JAVA:方法重寫方法過載區別

                                          &

java方法重寫方法過載區別

方法重寫(override):     子類繼承父類,子類中方法繼承父類的方法。當子類中方法重寫,會覆蓋父類的方法。     eg:       class Father{   &

java-方法重寫方法過載區別

1、方法過載:  -  可以改變返回值型別,只看引數列表。  -  本類中出現的方法名一樣,引數列表不同的方法,與返回值型別無關。   2、方法重寫:  -  子類中出現了和父類中方法宣告一模一樣的方法。與返回值型別有關,返回值是一致的,或者是子父類的。 &

java面試題2--方法重寫過載、this和super關鍵字

1:方法重寫和方法過載的區別?方法過載能改變返回值型別嗎? 方法重寫:      在子類中,出現和父類中一模一樣的方法宣告的現象。 方法過載:      同一個類中,出現的方法名相同

PHP面向物件之方法重寫過載

直接程式碼:class father{ public function test(){ echo "father"; } public function tes

C#物件的三個特點:封裝,繼承,多型, 以及c#中隱藏(new)和方法重寫(override)和過載(overload)的區別

封裝 1)封裝原則:將不需要對外提供的內容都隱藏起來,把屬性都隱藏,提供公共方法對其訪問,通常有兩種訪問方式:set 設定,get 獲取。 2)封裝結果:存在但是不可見。 3) 訪問修飾符 宣告的可訪問性                                

方法覆蓋方法過載,介面抽象類的區別

1:方法覆蓋(Overriding)和方法過載(Overloading)是什麼意思? 重寫和過載的區別? 答:Java中的方法過載發生在同一個類裡面兩個或者是多個方法的方法名相同但是引數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,

IOS雜筆- 7(類方法loadinitialize的區別 淺析)

ram rom 運行 所在 ttr app 函數 tor static 在介紹兩種類方法之前,NSObject Class Reference裏對這兩個方法說明: +(void)initialize The runtime sends initialize to each

Go中匿名字段的方法繼承方法重寫

string 不能被重載 ring 運行 imp 匿名字段 ack pack pac // code_019_struct_anonymous_field_method project main.go package main import ( "fmt" )

方法重寫方法重載的區別?

方法重載 繼承關系 通過 而是 調用方法 返回值 新的 內容 per **方法重載:overload一個類中你有了一個方法A,在這個類中你又寫了一個方法B,方法A和方法B的方法名一樣,但參數不同,返回值類型不同,與返回值無關,此時方法B重載了方法A;參數不同體現在:(1):

方法重寫繼承

                                         

Java -- 構造函數 & this & 方法重寫方法重載的區別

size his 四種 技術分享 返回 如果 package aps 否則 JAVA: 今天總結一下構造方法、關鍵字、方法重載和方法重寫的異同 一、構造方法(構造函數)1、構造方法的作用:一是創建對象時調用構造方法創建對象,二是可以初始化多個屬性 【學生類創建一個學生對

總結:介面、類、抽象類、繼承、建構函式、方法重寫方法過載、自動轉型、多型、引用傳遞

介面: 格式:   訪問許可權  interface  類名 {  } 特點:1.介面中的方法必須都是抽象方法(abstract修飾符可以省略)      2.屬性必須都是常量(static final修飾符可以省略)      3.不能直接建立物件 類:分為普通類和抽

(四)wait()、notify()、notifyAll()方法||wait()sleep()的區別

wait()、notify()、notifyAll()方法 wait()與sleep()的區別 一、wait()、notify()、notifyAll()方法 方法介紹 w

Java中方法重寫方法重載

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