C#面向對象的編程思想的精髓:模擬真實世界,把真實世界中的事物抽象成類,整個運用程序就是靠類和類之間的相互協作和通信完成系統功能
總結以上的說法:程序一切來源於類,並在不同的的需求情況下在類的基礎上進行擴展,以完成系統所需功能,並且不斷的優化系統性能
下面講一下我個人對“類”的理解和使用
一、關於類的基本小知識(內容不多,作為對類的系統理解)
- 普通基類
- 普通基類虛成員(virtral關鍵字修飾的成員,可以被子類重寫(override))
- 抽象類(abstract 關鍵字修飾,有抽象成員、實例成員,類本身不能new。抽象成員一般指抽象方法,只能有方法的聲明不能具體實現,實現是由子類來完成的(override))
- 接口(interface 關鍵字修飾,不能new,天生就是public 成員不能使用public 進行修飾,存在顯示和隱式兩種實現方式,實現接口的類必須實現接口成員)
補充一下類的訪問范圍:子類繼承基類,可以繼承基類的共有成員和受保護成員。私有成員只在類的內部可見,一般是類中的字段成員,類的外部可以通過類的屬性訪問器(get/set)來訪問類私有成員。類的外部只能訪問類的共有成員。
那么上面所列舉的四種情況是什么關系呢,又是在什么情況下使用呢,我下面做一個自己的簡單理解
總結一句話:繼承使我們的代碼得到一定程度的優化,當這些知識掌握很好之后你就會發現實現相同的功能,使用繼承代碼量會減少很多,更精簡干練
二、舉個小梨子
1、聲明一個抽象類
1 abstract class LongXiaM 2 { 3 public abstract void Tongzhi(int tem); 4 }
2、創建兩個普通基類實現上面抽象類
首先先聲明每個類各自會用的方法
1 class Alerm 2 { 3 public void AlermXiazi(string name,int tem) 4 { 5 Console.WriteLine("{0}tongzhi,wenduyijing {1} keyi dashui le ",name,tem); 6 } 7 }
1 class ShowInfo 2 { 3 public void TongzhiLongzi(string name,int tem) 4 { 5 Console.WriteLine("{0}tongzhi shuiwen yijing {1} ,keyhidashui le ",name,tem); 6 } 7 }
創建子類
1 class xiazi:LongXiaM 2 { 3 string name; 4 public xiazi(string n) 5 { 6 this.name = n; 7 } 8 public override void Tongzhi(int tem) 9 { 10 Alerm a = new Alerm(); 11 a.AlermXiazi(name,tem); 12 } 13 } 14 15 class longzi:LongXiaM 16 { 17 string name; 18 public longzi(string n) 19 { 20 this.name = n; 21 } 22 public override void Tongzhi(int tem) 23 { 24 ShowInfo t = new ShowInfo(); 25 t.TongzhiLongzi(name,tem); 26 } 27 }
3、創建一個中間調用的方法
1 class BoilWater 2 { 3 private int tem; 4 public List<LongXiaM> lxm = new List<LongXiaM>(); 5 6 public void ShowBaseInfo() 7 { 8 for (int i = 0; i <= 100; i++) 9 { 10 tem = i; 11 if (i > 99) 12 { 13 if (lxm.Count > 0) 14 { 15 foreach (var lx in lxm) 16 { 17 lx.Tongzhi(tem); 18 } 19 } 20 } 21 } 22 } 23 }
4、在主程序中調用
1 static void Main(string[] args) 2 { 3 BoilWater b = new BoilWater(); 4 b.lxm.Add(new xiazi("看不見")); 5 b.lxm.Add(new longzi("聽不見")); 6 b.ShowBaseInfo(); 7 }
5、結果
1 看不見tongzhi,wenduyijing 99 keyi dashui le 2 聽不見tongzhi shuiwen yijing 99,keyhidashui le
三、上面這個例子可以看出,當我們學會如何靈活的使用類,巧妙的設計邏輯結構后,在代碼上可以節省很大的力氣,也可以看出我們的專業性