什么是类(class)

  • 类是现实世界事物的模型,是对现实世界事物进行抽象所得到的结果
    • 事物包括”物质”(实体)与”运动”(逻辑)
    • 建模是一个去伪存真、由表及里的过程

image.png

类与对象的关系

  • 对象也叫实例,是类经过”实例化”后得到的内存中的实体

    • formally “instance” is synonymous with “object”——对象和实例是一回事
    • “飞机”与”一架飞机”有何区别?天上有(一架)飞机——必须是实例飞,概念是不能飞的
    • 有些类是不能实例化的,比如”数学”(Math class),我们不能说”一个数学”
  • 依照类,我们可以创建对象,这就是”实例化”

    • 现实世界中常称”对象”,程序世界中常称”实例”
    • 二者并无太大区别,常常混用,初学者不必迷惑
  • 使用new操作符创建类的实例

  • 引用变量与实例的关系

    • 孩子与气球(myForm1为孩子,new Form()为气球)
    • 气球不一定有孩子牵着(比如直接写new Form();)
    • 多个孩子可以使用各自的绳子牵着同一个气球,也可以都通过一根绳子牵着气球 ```csharp using System.Windows.Forms;

namespace ClassAndInstance { class Program { static void Main(string[] args) { Form myForm1;//myForm为引用变量 Form myForm2; myForm1 = new Form(); //new Form()为实例化后的实例,”=”是赋值操作符 myForm2 = myForm1; //多个孩子可以使用各自的绳子牵着同一个气球 myForm1.Text = “My Form”; myForm1.ShowDialog(); } } } ```

类的三大成员

  • 属性(Property)

    • 存储数据,组合起来表示类或对象当前的状态(比如飞机的高度为0,速度为0,则判断为静止状态)
  • 方法(Method)

    • 由C语言中的函数(function)进化而来,表示类或对象”能作什么”
    • 工作中90%的时间是在与方法打交道,因为它是”真正做事”、”构成逻辑”的成员
  • 事件(Event)

    • 类或对象通知其他类或对象的机智,为C#所特有(Java通过其他办法实现这个机制)
    • 善用事件机制非常重要
  • 使用MSDN文档

    • 可以查看类的一些定义,继承关系,实现的一些接口和其所包含的属性、方法、事件等
  • 某些特殊类或对象在成员方面侧重点不同

    • 模型类或对象重在属性,如Entity Framework
    • 工具类或对象重在方法,如Math,Console
    • 通知类或对象重在事件,如各种Timer

静态成员与实例成员

  • 静态(Static)成员在语义上表示它是”类的成员”
  • 实例(非静态)成员在语义表示它是”对象的成员”
  • 绑定(Binding)指的是编译器如果把一个成员与类或对象关联起来
    • 成员访问操作符”.”
  • 创建静态成员应遵循,其隶属于某个类,而非某个对象,设计类时一定要注意
    • 如:人的身高、体重为非静态成员(即属于人这个对象),而人的平均身高、平均体重为静态成员(属于人这个类)