您好,登錄后才能下訂單哦!
static class Program { /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main() { OptertorAdd op = new OptertorAdd(); op.GetResult(1, 2); } } /// <summary> /// 父類 Created:ChenHu date:2013326 /// </summary> public class Opreator { //不想暴漏在外的私有變量可以用屬性封裝起來 private double _numA; private double _numB; public double NumA { get { return _numA; } set { _numA = value; } } public double NumB { get { return _numB; } set { _numB = value; } } public virtual double GetResult(int a, int b) { double result = 0; //------------------------------------------ //TODO:可以處理需要影藏的邏輯,這也是new或則說虛方法隱藏的邏輯的一種手段,隱藏的邏輯可以是員工的薪資計算等保密操作 //------------------------------------------ result = _numA + _numB; return result; } } /// <summary> /// 派生類 Created:ChenHu date:2013326 /// </summary> class OptertorAdd : Opreator { public override double GetResult(int a, int b) { //這里base的邏輯可以放在自己邏輯之前也可以放在自己邏輯的后面 //這里的位置其實很有講究哦,邏輯不對可能會引起報錯。 //如把base邏輯放在自己邏輯之前,在父類中 _numA + _numB=0;因為你還沒賦值 base.GetResult(a, b); NumA = a; NumB = b; double result = 0; result = NumA + NumB; //父類邏輯在此位置 _numA + _numB=3; //base.GetResult(a, b); return result; } } /// <summary> ///首先創建一個工廠,這里我們通過向上轉型實現多態 ///這里我們試用靜態字段的原因就是: ///這個類可能調用的次數很大,我們最好讓其閑在內存加載好 /// </summary> /// <remarks> /// 可以這樣理解多態:一個賣豬肉的爹生了好幾個兒子(兒子都具有爹的基因此為繼承), /// 每個兒子的工作都不一樣,有賣西瓜的賣土豆的,這個時候, /// 如果爹想吃西瓜了就會找到賣西瓜的兒子要,如果想吃土豆也是一樣的。如果想吃豬肉, /// 但是沒有賣肉的兒子怎么辦呢? 呵呵 生一個賣豬肉的兒子就行了,雖然有點夸張,但是這是多態的本質。 /// </remarks> public static class OptetaionFactory { /// <summary> /// Frank 2013327 /// </summary> /// <param name="oper">計算符號,根據不同的符號返回不同的計算類實體</param> /// <returns>計算類</returns> public static Opreator OptertCreate(String oper) { Opreator opretaor = null; switch (oper) { case "+": //向上轉型:子類->父類 opretaor = new OptertorAdd(); break; //TODO:這里可以根據需要然后從父類派生出更多的子類實例:這就是多態了 } return opretaor; } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。