類是描述一組相似對象共有特徵的抽象。通俗的講就是物以類聚。打個比方,豬圈裡有一堆的小豬,我們給它們每一個取了一個的名字,小花,小白,小黑,小xxx。。。。小花有四兩重,小白有一斤重,小黑有二斤重。那麼問題來了,小花,小白,小黑它們共有的特徵是什麼呢?OK,我們的回答是它們都是小豬!為什麼你不說它們是小狼?小熊?用IS-A的觀念來看,小花是小豬,小白是小豬,小黑也是小豬,符合小花是((IS)(-A))一個小豬,這一IS-A說法。反過來就是錯的,我們不能說小豬是小花。所以本例中小豬就是類,而小花,小白,小黑是類的什麼呢?是對象,類的對象,或稱類的執行個體,它們具有類的共同特徵,肥肥的有四條腿的動物-豬。換句更形象點的說法,類就象糕點廠裡的糕點模具,從模具中印出來的月餅外觀都是一模一樣的,當然它們的心子料可能不同。但每個小豬有我們按它們的膚色、班點給它取的不同的名字,它們的重量也各不相同。那麼小豬可以幹嘛呢?我們簡單的說,可以吃,可以睡,所以可以幹嘛是個動作,通常就是指類的方法。
記住觀點:用類來表示概念。找出事物的共性和不同性,不同性是建立在已有的共性上的,共性往往是類(介面或是抽象類別)。
所以用C#的類來寫這個執行個體就是:
class LittlePig //小豬類
{
private double height; //重量
private string name; //名字
public LittlePig(string name, double height)//構造方法
{
this.name = name;
this.height = height;
}
public double Height //height的屬性
{
get { return height; }
set { this.height = value; }
}
public void eat() //吃方法
{
Console.WriteLine("{0} is eatting. ", name);
}
public void sleep() //睡方法
{
Console.WriteLine("{0} is sleepping.", name);
}
}
class Test
{
static void Main()
{
//建立類的對象(或稱執行個體化)
LittlePig xiaohua = new LittlePig("小花", 0.4);
LittlePig xiaobai = new LittlePig("小白", 1.0);
LittlePig xiaohei = new LittlePig("小黑", 2.0);
xiaohua.eat();//調用方法,注意體會打點時你會看到一個下拉式清單,上面就有我們寫的兩個方法。注意看方法左邊的小表徵圖。同時下拉式清單中你也可以看到我們剛定義的Height屬性,注意看左邊的小表徵圖。
}
}
類裡的成員變數 height, name,就是屬性,不用懷疑,C#的中的屬性概念,是指類成員變數的Getter(讀方法)和Setter(寫方法)組成的一個集合,目的就是提供類私人變數的讀寫控制,所以成員變數稱之為類屬性,具有更廣泛的意義,或稱廣義上的屬性。
不知道偶的解釋夠不夠清晰?如果你能理解上面所述,再去理解事件(Event)是什麼,委託(Delegate)是什嗎?慢慢來,羅馬不是一天就建成的。