隱藏:衍生類別宣告與繼承成員同名新成員,編譯器給出警告(非錯誤)。
在隱藏成員加 new 修飾詞,明確表達隱藏意圖:
class Car : Vehicle {
public new void Speak() => Console.WriteLine("Di-di!");
}
Vehicle v = new Vehicle(); v.Speak(); // "Vehicle speaking!"
Car c = new Car(); c.Speak(); // "Di-di!"
Vehicle v2 = new Car(); v2.Speak(); // "Vehicle speaking!" (非虛擬,靜態繫結)
new 和 override → 編譯錯誤。new 但實際未隱藏任何成員 → 編譯警告。