以上的基類和派生類都是相對的。b 是 c 的基類,也可以是 a 的派生類,b 中既可以對 a 中的 virtual 虛方法用 override 重寫,也可以指定 virtual 虛方法供 c 重寫。
public class baseclass}public class derivedclass : baseclass
}
例public class baseclass可以看出隱藏使用的是關鍵字 new。}public class derivedclass : baseclass
}
我們在分析問題時,越往上分析,就感覺結構越抽象。比如,我們分析動物的捕獵行為:這幾種動物是群力合作,那幾種動物是耐心守候,那幾種動物是致命一擊……他們都有乙個方法叫「捕獵」,只是我們無法給他們乙個統一的過程。此時我們可以在他們的基類中定義乙個抽象方法,該方法什麼事也不做,只是占個名字。
public abstract class huntinganimalhuntinganimal 用 abstract 定義了乙個抽象方法 hunt(),由於抽象方法不做什麼事情,所以不需要大括號,直接加引號結束即可。在派生類中,用 override 來實現這個抽象方法。public class tiger : huntinganimal
}
注意,雖然虛方法和抽象方法均是利用 override 關鍵字來重寫,但虛方法和抽象方法是完全不同的。
一般我們指的多型性是指「執行時的多型性」,也就是在程式執行時,系統根據不同的物件確定呼叫物件所屬類的相應方法的能力。
示例
namespace cftea執行結果是:public string getstring()
}public class derivedclass : baseclass
public new string getstring()
}public partial class form1 : form
private void form1_load(object sender, eventargs e)
}}
我們可以看到,derivedclass 與 baseclass 型別不同,但是指向的都是 new derivedclass():
從這裡我們可以看出重寫與隱藏的區別了。
c 多型 重寫 覆蓋 隱藏 過載
多型 重寫 覆蓋 c 中多型是指同乙個操作作用於不同的物件可以有不同的解釋,產生不同的執行結果,多型是通過虛函式實現的,在派生類中重寫基類的虛函式。呼叫方法 宣告基類的指標,利用該指標指向派生類物件,就可以用該指標呼叫派生類中重寫後的虛函式。這樣就可以根據指向的派生類不同,而實現不同的方法。多型的特...
C 重寫(override),虛擬,抽象,隱藏
在父類中有乙個方法,但是子類中也需要這個方法的名稱,但是子類中的方法的邏輯與父類方法中的邏輯不相同,則需要在子類中對這個方法進行重寫 關鍵字 override 如果父類中有乙個方法,則子類中預設是不允許出現同名方法,如果出現了則系統認為是子類中要隱藏父類中的這個同名方法,那麼在子類物件呼叫方法之後則...
覆蓋,重寫,過載,隱藏,多型的區別
簡單解析一下oop程式設計中常常讓人困惑的幾個名詞。覆蓋,重寫,過載,隱藏,多型 首先,覆蓋也稱重寫,英文override 特點 1.指不同作用域中 派生類和基類 同名函式的定義 2.函式名 引數均完全相同 3.基類對應方法前有 virtual,即被宣告為虛函式 作用 基類指標和引用在呼叫對應方法時...