本节内容
1.类(class)是现实世界事物的模型
2.类与对象的关系,什么时候叫“对象”什么时候叫“实例”
3.引用变量与实例的关系
4.类的三大成员:
①属性(Property);
②方法(Method);
③事件(Event)
5.类的静态成员与实例成员
①关于“绑定”(Binding)
1、类(class)是现实世界事物的模型
类是对现实世界事物进行抽象所得到的结果类包括“物质”(实体)与“运动”(逻辑)建模是一个去伪存真、由表及里的过程
2、类与对象的关系
①对象也叫实例,是类经过“实例化”后得到的内存中的实体
对象和实例是一回事:“Formallly “instance”is synonymous with “object”。“飞机”与“一架飞机”有何区别?天上有(一架)飞机——必需是实例飞,概念是不能飞的。有些类是不能实例化的,比如“数学”(Math class),我们不能说“一个数学”
②依照类,我们可以创建对象,这就是“实例化”现实世界中常称“对象”,程序世界中常称“实例”二者并无太大区别,常常混用,初学者不必迷惑
③使用new操作符创建类的实例:new Form();这叫创建实例
3、引用变量与实例的关系:如Form类:Form myForm;这样就声明了一个引用变量
myForm=new Form();该语句就是把new出来的实例交给myForm这个引用变量,用引用变量调用新建的这个实例,更方便的对实例的方法属性等进行访问。
孩子与气球:
形象的比喻:孩子相当于引用变量,气球相当于new出来的实例,
Form myForm=new Form();
该语句相当于让一个孩子牵住了一个气球。
有三种状态:
*气球不一定有孩子牵着:即new Form();没人牵着气球就飞走了,实际上在内存当中,内存垃圾收集器很快就把这个对象收回去了,把相应内存释放掉。
*有小朋友没有牵着气球:Form myForm;
*多个孩子可以牵着同一个气球:
Form myForm1;
Form myForm2;
myForm1=new Form();
myForm2=myForm1;
也可以通过同一根绳子牵着气球.
4、类的三大成员
①属性(Property)
存储数据,组合起来表示类或对象当前的状态
②方法(Method)
有C语言中的函数(function)进化而来,表示类或对象“能做什么”
工作中90%的时间是在与方法打交道,因为它是“真正做事”、“构成逻辑”的成员
③事件(Event)
类或对象通知其他类或对象的机制,为C#独有(Java通过其他方法实现这个机制)
善用事件机制非常重要(滥用事件可能搞项目搞砸)
④使用MSDN文档
某些特殊类或对象在成员方面侧重点不同
模型类或对象重在属性:如Entity Framework
工具类或对象重在方法:如Math,Console
通知类或对象重在事件:如各种Timer
5、静态成员与实例成员
静态(static)成员在语义上表示它是“类的成员”,实例(非静态)成员在语义上表示它是“对象的成员”。
①绑定(Binding)指的是编译器如何把一个成员或对象关联起来:
分为早绑定和晚绑定:
早绑定指的是编译器在编译这个类的时候就已经知道这个成员到底隶属于这个类呢还是这个类的对象;
晚绑定指的是编译器不管这个事情,直到程序运行之后才决定一个方法(成员)是属于某个类呢,还是这个类的对象。
有晚绑定功能的语言一般叫做动态语言,典型的有JavaScripts.
*不可小觑的“.”操作符——成员访问