重寫,隱藏,抽象,多型

2022-08-03 23:57:13 字數 1252 閱讀 5336

以上的基類和派生類都是相對的。b 是 c 的基類,也可以是 a 的派生類,b 中既可以對 a 中的 virtual 虛方法用 override 重寫,也可以指定 virtual 虛方法供 c 重寫。

public class baseclass

}public class derivedclass : baseclass

}

例public class baseclass

}public class derivedclass : baseclass

}

可以看出隱藏使用的是關鍵字 new。

我們在分析問題時,越往上分析,就感覺結構越抽象。比如,我們分析動物的捕獵行為:這幾種動物是群力合作,那幾種動物是耐心守候,那幾種動物是致命一擊……他們都有乙個方法叫「捕獵」,只是我們無法給他們乙個統一的過程。此時我們可以在他們的基類中定義乙個抽象方法,該方法什麼事也不做,只是占個名字。

public abstract class huntinganimal

public class tiger : huntinganimal

}

huntinganimal 用 abstract 定義了乙個抽象方法 hunt(),由於抽象方法不做什麼事情,所以不需要大括號,直接加引號結束即可。在派生類中,用 override 來實現這個抽象方法。

注意,雖然虛方法和抽象方法均是利用 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,即被宣告為虛函式 作用 基類指標和引用在呼叫對應方法時...