多型在C 中的應用

2022-03-05 15:39:50 字數 2100 閱讀 2697

多型在c#中的應用

c# 語言經過專門設計,以便不同庫中的基類

與派生類之間的版本控制可以不斷向前發展,同時保持向後相容。這具有多方面的意義。例如,這意味著在基類

中引入與派生類中的某個成員具有相同名稱的新成員在c# 中是完全支援的,不會導致意外行為。它還意味著類必須顯式宣告某方法是要重寫乙個繼承方法,還是乙個僅隱藏具有類似名稱的繼承方法的新方法。

c# 允許派生類包含與基類方法名稱相同的方法。

·基類方法必須定義為 virtual。·

如果派生類中的方法前面沒有 new

或 override

關鍵字,則編譯器將發出警告,該方法將有如存在new 關鍵字一樣執行操作。

·如果派生類中的方法前面帶有new 關鍵字,則該方法被定義為獨立於基類中的方法。

·如果派生類中的方法前面帶有override 關鍵字,則派生類的物件將呼叫該方法,而不呼叫基類方法。

·可以從派生類中使用base 關鍵字呼叫基類方法。

·override

、virtual 和new 關鍵字還可以用於屬性、索引器和事件中。

預設情況下,c# 方法不是虛方法-- 如果將一種方法宣告為虛方法,則繼承該方法的任何類都可以實現其自己的版本。若要使方法成為虛方法,必須在基類的方法宣告中使用virtual 修飾符。然後,派生類可以使用override 關鍵字重寫基虛方法,或使用new 關鍵字隱藏基類中的虛方法。

如果override 關鍵字和new 關鍵字均未指定,編譯器將發出警告,並且派生類中的方法將隱藏基類中的方法

。何時用override:msdn例子

// define the base class

class car

}// define the derived classes

class convertiblecar : car

}class minivan : car

}static void main()

}首先宣告三個類:乙個名為

car的基

類以及從該基類派生的兩個類

convertiblecar

和 minivan

。基類包含乙個可將有關汽車的描述傳送到控制台的方法(

describecar

)。派生類方法也包含乙個名為

describecar

的方法,該方法顯示派生類的獨特屬性。這些方法還呼叫基類的

describecar

方法來演示從

car類繼承屬性的方式。

重寫當在類中指定方法時,如果有多個方法與呼叫相容(例如,存在兩種同名的方法,並且其引數與傳遞的引數相容),則

c# 編譯器將選擇最佳方法進行呼叫。下面的方法將是相容的:

public class derived : base

public void dowork(double param) }在

derived

的乙個例項中呼叫

dowork

時,c# 編譯器將首先嘗試使

該呼叫與最初在 derived 上宣告的 dowork 版本相容。重寫方法不被視為是在類上進行宣告的,而是在基類上宣告的方法的新實現

。僅當c# 編譯器無法將方法呼叫與 derived 上的原始方法匹配時,它才嘗試將該呼叫與具有相同名稱和相容引數的重寫方法匹配。

例如:int val = 5;

derived d = new derived();

d.dowork(val);// calls dowork(double).

由於變數

val可以隱式轉換為double 型別,因此c# 編譯器將呼叫

dowork(double)

,而不是

dowork(int)

。有兩種方法可以避免此情況。首先,避免將新方法宣告為與虛方法同名。其次,可以通過將

derived

的例項強制轉換為

base

來使c# 編譯器搜尋基類方法列表,從而使其呼叫虛方法。由於是虛方法,因此將呼叫

derived

上的 dowork(int)

的實現。例如:

((base)d).dowork(val);// calls dowork(int) on derived.

(C 模板程式設計) 多型在模板中的應用

多型 人類 class human virtual human 作為父類時一般應該有乙個虛析構函式,在 c 設計模式 中給大家講解 男人 class men public human 女人 class women public human men objmen women objwomen 父類引用...

多型在開發中實際的應用

多型在實際開發中的應用 1 分析 以主人餵養寵物這個場景要實現需要進行型別的抽象 主人 類 主人可以餵養寵物,所以主人有餵養的這個動作 寵物 類 寵物可以吃東西,所以寵物有吃東西這個動作 2 物件導向程式設計的核心 定義好類,然後將類例項化為物件,給乙個環境驅使一下,讓哥個物件之間寫作起來形成乙個系...

在 C 中多型是如何實現的

在 c 中,多型的實現是在基類的函式前加上 virtual 關鍵字使其成為虛函式,並在派生類中重寫該函式 該函式執行時會根據引用或指標繫結的物件的真實型別來決定要執行的版本。如果物件型別是派生類,就呼叫派生類的函式 如果物件型別是基類,就呼叫基類的函式。多型性是物件導向程式設計 oop 的核心思想,...