c 中的過載和重寫區別

2021-05-02 13:30:43 字數 1296 閱讀 4710

過載的條件:

1.必須在同乙個類中2.方法名必須相同3.引數列表不能相同。

重寫的條件:

1. 在不同的類中

2. 發生方法重寫的兩個方法返回值,方法名,引數列表必須完全一致

3. 子類丟擲的異常不能超過父類相應的方法丟擲的異常

4. 子類方法的訪問級別不能低於父類相應方法的訪問級別(public,package,protected, private)

5.方法體不同

super()呼叫父類構造,super.只能呼叫父類的例項方法

this()呼叫該類的其他構造方法,this.呼叫類的屬性,方法

如果父類有有參構造,子類必須定義構造方法

過載:

過載發生在同乙個類中;過載主要是針對同乙個類中方法名相同但引數(必須的)不同或返回型別(不是必須的)不同的情況。可以參照如下的**

class overloadtest

public void hello(string str)

public string hello()

} 在這段**中有三個具有相同名稱的方法hello,他們彼此之間是過載的關係,注意兩點:他們共同存在於乙個類中,雖有同樣的名字但是執行不同的操作;第乙個方法和第三個方法只有返回型別不同,這在c# 中是不允許的,編譯器會報出「已定義乙個名為"hello"的方法」的錯誤。

重寫:重寫發生在有繼承關係的類之間

重寫發生在派生類上,通過override關鍵字來改寫從其父類繼承過來的具有相同返回值,方法名稱和引數列表的方法。

class program

} class overwritetest

//define a virtual method hello() to be over written

public virtual void hello()

} class overwritetesttt : overwritetest

} class overwritetestttt : overwritetesttt

} 上面這段**演示了如何對父類的方法進行重寫,需要注意的地方有兩點:可以在子類中被重寫的方法一定要被標記成virtual(虛擬), abstract(抽象), override(重寫)標記為virtual 和abstract 的函式就是為了重寫而建立的,標記為override的函式本身是由前兩種函式重寫而來的,所以它可以被重寫也是順理成章的了;重寫的函式必須在子類中出現,而且任何乙個父類的函式在其乙個子類中只能被重寫一次。(這一點很好理解,當你要重寫兩次時,該子類中將定義兩個返回型別,方法名稱 和引數列表都相同的函式,這肯定是不可能的)。

c 中的過載和重寫區別

過載的條件 1.必須在同乙個類中2.方法名必須相同3.引數列表不能相同。重寫的條件 1.在不同的類中 2.發生方法重寫的兩個方法返回值,方法名,引數列表必須完全一致 3.子類丟擲的異常不能超過父類相應的方法丟擲的異常 4.子類方法的訪問級別不能低於父類相應方法的訪問級別 public,package...

C 重寫和過載的區別?重寫和過載的意義?

重寫 要求方法名 引數和返回值相同 意義 重寫是為了增強類的重用性和復用性,擴充套件性 重寫是對類中方法的擴充,因為繼承用的是父類的東西,重寫則不僅得到父類的東西,同時也加入了自己的東西。方法重寫的一些特性 1.發生方法重寫的兩個方法返回值 方法名 引數列表必須完全一致 子類重寫父類的方法 2.子類...

C 過載和重寫的區別

日常編碼中想要更好,效率更高,c 基礎很重要,只有深入了解基礎才會在使用過程中靈活多變。今天來看一下,編碼過程中經常遇到的過載與重寫的區別。1 過載在同類中 重寫在父子類中進行 2 定義的方式不同 過載定義是方法名相同,裡面的引數不同 重寫是方法名和引數都相同 3 呼叫的方式不同 過載相同的物件呼叫...