1、类与对象南华大学计算机学院软件工程系蒋良卫本讲安排 理解类 字段、属性、构造函数 访问权限 类与对象 类库与程序集1 类的定义字段、方法、属性,静态成员,访问权限定义一个类C#使用使用class关键字定义类关键字定义类创建类图使用类图缩放缩放类的成员 变量 字段field 函数 方法method 字段和方法称为类的成员member如何使用类 对象变量 私有字段、私有方法无法访问类成员的访问权限 两种最基本的权限:public:公有,外部可自由访问 private:私有,仅自身的方法可以访问 建议:只开放有需要的成员为public小结 使用class定义一个类 使用new创建类的实例,即对象,存
2、放在托管堆中 通过对象变量,可访问对象的公有成员,包括字段和方法属性 属性也属于类的成员 属性=字段+get/set方法 字段可以显式定义,也可隐式定义显式定义写存取器写存取器读存取器读存取器隐式定义.Net.Net会会自动创建隐藏字段自动创建隐藏字段,保存属性值,保存属性值属性 当读取属性值时,调用get方法 当对属性赋值时,调用set方法 可以在上述方法中对值进行控制,以满足业务需要 可以只有get方法,此时该属性为只读属性属性与字段 如何使用?当信息需要满足特定规则时,用属性,如:成绩必须满足0,100 需要在 赋值或读取数据时完成特定工作时,用属性,如:成绩不满足要求,输出“成绩有误”
3、提示信息 多用属性,少用字段类和对象区别 面向对象最最基本的概念就是“类”和“对象”,大家如何理解它?看个WinForm例子类与对象 类好比一个模板 对象是根据模板创建出来,它拥有模板定义的所有特性,但是不同的对象其相同特性的取值可以不同对象变量解析 类、对象、对象变量 类是模板,对象是依照模板生产的产品 赋值给“类”类型的变量,称为对象变量,它保存了对对象的引用(即对象的地址),存放在线程堆栈中图解对象变量类类对象变量对象变量线程堆栈线程堆栈对象对象托管堆托管堆new引用引用内存类型“类”类型的变量属于“引用类型”(Reference Type)的变量,自身位于线程堆栈中,其引用的对象位于堆
4、(heap)中 int之简单类型的变量属于“值类型”(value type)的变量,值类型的变量位于线程堆栈(thread stack)中对象变量赋值 赋值前 赋值后赋值后对象变量对象变量obj1对象变量对象变量obj2A对象对象null(空引用空引用)对象变量对象变量obj1对象变量对象变量obj2A对象对象以下代码输出结果truefalse原理分析 类的实例成员只能通过对象来访问。每个对象对其实例成员是专有的、独占的 类的静态成员归所有对象所共享,类似全局变量,它是共享的为何反复的强调 我们反复强调了类、对象、成员、内存类型,因为深刻理解这些概念,是面向对象编程的基础 只有掌握了这些内容,才能够准确理解后继更丰富的其他面向对象编程知识类库、程序集、命名空间 每个类库项目编译之后,将会生成一个程序集 类库项目中可以拥有多个类 这些类可以属于不同的命名空间 不同的类库项目可以属于相同的命名空间 命名空间是逻辑概念,物理载体是程序集,可通过创建类库项目生成程序集,一个程序集可以有多个命名空间,一个命名空间可以分布于多个程序集 课后阅读 软件设计 4.4.2 面向对象的设计 练习 为计算器添加日志功能 使用文件系统保存日志