通过c#的windows窗体应用程序来学习类,对象,方法,可以。不过眼见为实并不能替代你的抽象思维。
如果偶告诉你这样一个事实,所有的可见控件,如按钮(Button),列表框(listBox),编辑框(Edit),都是窗口(window)。你怎么想,怎么理解这个事实?
类是描述一组相似对象共有特征的抽象。通俗的讲就是物以类聚。打个比方,猪圈里有一堆的小猪,我们给它们每一个取了一个的名字,小花,小白,小黑,小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)是什么?慢慢来,罗马不是一天就建成的。
[
本帖最后由 hellovfp 于 2011-12-26 12:45 编辑 ]