衍生類別自動擁有基底類別非私有成員:
class Parent { public void Msg() => Console.WriteLine("Parent"); }
class Child : Parent { } // 繼承 Msg
var p = new Parent(); p.Msg(); // Parent
var c = new Child(); c.Msg(); // Parent (繼承而來)
基底 `virtual` + 衍生 `override` 修改行為:
class Parent { public virtual void Msg() => Console.WriteLine("Parent"); }
class Child : Parent { public override void Msg() => Console.WriteLine("Child"); }
var p = new Parent(); p.Msg(); // Parent
var c = new Child(); c.Msg(); // Child
class Child : Parent
{
public override void Msg()
{
base.Msg(); // 呼叫基底實作
Console.WriteLine("Child");
}
}
| 繼承 | 介面 |
|---|---|
| 單一繼承 | 多重實作 |
| 共享程式碼 (欄位/方法) | 僅契約 |
| 強耦合 (is-a) | 鬆散耦合 (can-do) |