private 成員外部類別不可存取。範例:Per 類別中 name 為 private,Main 中直接存取會編譯錯誤「不可存取,受保護等級限制」。
透過 get/set 封裝欄位存取,利於維護與驗證。
Per percy = new Per();
Console.WriteLine(percy.address);
percy.age = 22; // 呼叫 set
Console.WriteLine(percy.age); // 呼叫 get
抽象類別不可實例化,可包含非抽象成員,抽象方法無主體,衍生類必須 override 實作。
public abstract class Myab { public abstract void Hi(string Name); }
public class SubMyab : Myab { public override void Hi(string Name) { Console.WriteLine(Name + " override"); } }
SubMyab obj = new SubMyab(); obj.Hi("Test");
介面成員皆為隱性 public 抽象,無建構子/解構子/靜態成員/常數。類別可實作多介面,介面可被多類別實作。範例:Ishape 定義 GetArea(),Circle/Retange/Triangle 分別實作計算面積。
public interface Ishape { double GetArea(); }
public class Circle : Ishape { public double radius; public Circle(double r){radius=r;} public double GetArea() => Math.PI * radius * radius; }
public class Retange : Ishape { public double witdh, height; public Retange(double w,double h){witdh=w;height=h;} public double GetArea() => witdh * height; }
public class Triangle : Ishape { public double Arc1,Arc2,Arc3; public Triangle(double a,double b,double c){Arc1=a;Arc2=b;Arc3=c;} public double GetArea() => Arc1 * Arc2 * Arc3; }