屬性規則與方法類似。get 視為同修飾符、無參、返回屬性類型的方法;set 視為同修飾符、單 value 參、返回 void 的方法。沿用第十章客戶住宿例擴展:
using System;
public enum sex { woman, man }
abstract public class People {
private string s_name;
public virtual string Name { get { return s_name; } }
private sex m_sex;
public virtual sex Sex { get { return m_sex; } }
protected string s_card;
public abstract string Card { get; set; }
}
People 含唯讀虛屬性 Name/Sex、可讀寫抽象屬性 Card。含抽象成員故類須 abstract。派生類 Customer:
class Customer : People {
string s_no; int i_day;
public string No { get { return s_no; } set { if (s_no != value) s_no = value; } }
public int Day { get { return i_day; } set { if (i_day != value) i_day = value; } }
public override string Name { get { return base.Name; } }
public override sex Sex { get { return base.Sex; } }
public override string Card { get { return s_card; } set { s_card = value; } }
}
Customer 以 override 重寫三屬性,聲明與基類一致。Name/Sex 僅 get 用 base 調用基類;Card 完整實現 get/set 覆蓋抽象成員。Customer 無抽象成員故可非抽象。