C#讲义第四讲 类与对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例: Point a[2]={Point(1,2),Point(3,4)};
• 如果没有为数组元素指定显式初始值,数 组元素便使用默认值初始化(调用缺省构 造函数)。
• 例:Point对象数组(详情见示例源代码)
4.4.2 对象列表
• • • • •
使用List<T>泛型。 方法: List<Student> list=new List<Student>() 好处: 可以动态的增删student对象
• 2)创建类的实例 • 其语法格式如下:
• 对象名=new 类名( );


例如,以下语句创建Person类的对象实 例:
p=new Persone();

封装把对象的所有组成部分组合在一起, 有三个作用 – 隐藏类的实现细节:使用方法将类 的数据隐藏起来。 – 迫使用户去使用一个界面去访问数 据:定义程序如何引用对 象的数据,控 制用户对类的修改和访问数据的程度。 – 使代码更好维护:类的内部实现改 变,对外接口可以不变。
• 3、带有参数的构造函数 • 假设一个类中包含有带参数的构造函数, 调用这种带参数的构造函数的语法如下:
• 类名 对象名=new 类名(参数表);
• 4、析构函数 • 什么是析构函数 • 在对象不再需要时,希望确保它所占 的存储空间能被收回。C#中提供了析构函 数用于专门释放被占用的系统资源。析构 函数具有如下性质:
4.1.1 面相对象概述
• 练习: • 说说教室里有哪些对象?这些对象有哪些属 性和方法? • 一切皆对象
4.1.1 面相对象概述
• 张三(一个学生)、杨老师、邻居售货员张阿 姨、李四的爸爸、李四的妈妈 • 门口停的奔驰S320汽车/老师开的QQ汽车/ 杨老师的解放牌大货车 • 类:类是模子,确定对象将会拥有的特征(属性)和行为
(方法)
• 类是对象的类型
4.1.2 面相对象特性
• •


所有东西都是对象:变量和方法的集合。 初级特性:OO最基本的概念,即类和对 象。 中级特性:OO最核心的概念,即封装、 继承和多态。 高级特性:由初级特性和中级特性引出的 一些问题,如构造函数的使用、覆盖的规 则、静态变量和函数等。
4.1.2 面相对象特性
4.4 对象数组与列表
• 定义100个学生,统计学生的成绩综合、平 均分等。 • 1、对象数组 • 2、对象列表
4.4.1 对象数组
• 声明:
类名 数组名[元素个数];
• 访问方法:
通过下标访问
数组名[下标].成员名
• 数组中每一个元素对象被创建时,系统都 会调用类构造函数初始化该对象。 • 通过初始化列表赋值。
析构函数在类对象销毁时自动执行。 一个类只能有一个析构函数,而且析构函 数没有参数,即析构函数不能重载。 析构函数的名称是“~”加上类的名称(中 间没有空格)。 与构造函数一样,析构函数也没有返回类 型。 析构函数不能被继承。
• 练习3: • 给前面写的学生类添加构造方法.使在实例 化学生类的时候可以通过构造方法对姓名 性别年龄语数英等属性赋值,也可以只对姓 名和性别赋值.年龄默认为18岁,语数英成绩 默认为0分.
4.3 构造函数与析构函数
• 1. 什么是构造函数 • 构造函数是在创建给定类型的对象时执 行的类方法。构造函数具有如下性质: 构造函数的名称与类的名称相同。 构造函数尽管是一个函数,但没有任何类 型,即它既不属于返回值函数也不属于voi d函数。
4.3 构造函数
一个类可以有多个构造函数,但所有构造函数的 名称都必须相同,它们的参数各不相同,即构造 函数可以重载。 当类对象创建时,构造函数会自动地执行;由于 它们没有返回类型,因此不能像其他函数那样进 行调用。 当类对象声明时,调用哪一个构造函数取决于传 递给它的参数类型。 构造函数不能被继承。 构造函数是用来创建对象的特殊方法,方法名和 类名一样,没有返回值,连void都不用。
• 实90 95 80 – 小兰 女 16 三科成绩为:95 85 100
• 练习2: • 编写一个梯形类class tixing,要求:
– 含有三个数据成员:top、bottom、height,分 别表示上底、下底、高度; – 有构造函数,用来初始化3个数据成员 – 有一个MianJi()函数,用来返回面积值 – GetTop函数,用来返回top值 – GetBottom函数,用来返回bottom值 – GetHeight函数,用来返回height值 – Print()函数,打印面积值
4.2.1 类
4.2.1 类 2、类的成员
3、类成员修饰符
4.2.2 对象
• 1、定义类的对象 • 一旦声明了一个类,就可以用它作为数 据类型来定义类对象(简称为对象)。定 义类的对象分以下两步: • 1)定义对象引用 • 其语法格式如下:
• 类名 对象名;


例如,以下语句定义Person类的对象引 用p: Person p;
• 练习4:
• 写一个Ticket类,有一个距离属性(在构造方法中赋 值),不能为负数,有一个价格属性,并且根据距离计算 价格(1元/公里):
– – – – 0-100公里 票价不打折 101-200公里 总额打9.5折 201-300公里 总额打9折 300公里以上 总额打8折
有一个方法,可以显示这张票的信息. • 测试上面的类.
2、访问对象的字段 • 访问对象字段的语法格式如下:
• 对象名.字段名
• 其中,“.”是一个运算符,该运算符的功能 是表示对象的成员。 • 例如,前面定义的p对象的成员变量表示为 : p.pno,p.pname
• 3、调用对象的方法 • 调用对象的方法的语法格式如下:
• 对象名.方法名(参数表)
第四讲 类与对象
主要内容
面向对象的概述 类与对象 构造函数与析构函数 对象数组
4.1 面相对象概述
• 本节内容: • 面相对象概述 • 面相对象特征
4.1.1 面相对象概述
• • • • • • • • • •
万物皆对象 试着描述杨老师和学生张三的特征和行为 属性——对象具有的各种特征 每个对象的每个属性都拥有特定值 例如:杨老师和张三的年龄不一样. 属性:姓名,性别,年龄 属性的值: 方法: 行为,动作.执行的操作. 方法:杨老师的行为,上课. 学生的行为,学习
• 2、默认构造函数
• 不带参数的构造函数称为默认构造函数。无论何 时,只要使用new运算符实例化对象,并且不为n ew提供任何参数,就会调用默认构造函数。假设 一个类包含有默认构造函数,调用默认构造函数 的语法如下: • 类名 对象名=new 类名(); • 如果没有为对象提供构造函数,则默认情况 下 C#将创建一个构造函数,该构造函数实例化 对象,并将所有成员变量设置为相应的默认值。
• 面向对象的优点 维护简单。 可扩充性。 代码重用。
4.2 类与对象
• 类:C#所有的代码都是在某一个类中,因 此不可能在类之外的全局区域有变量和方 法。 • 对象:C#中的对象相当于一块内存区域, 保存对象特有的类中所定义的数据。
4.2 类与对象
– 类是抽象的概念,仅仅是模板,比如说:“人” 类 – 对象是一个你能够看得到、摸得着的具体实体
• 练习5: • 使用练习1 的学生类,构建100个学生的学 生数组,求100个学生的每一门课程的总成 绩。(学生每一个门课程的成绩可以采用 随机数生成) • 练习6: • 定义一个Point类,定义一个存放50个点的 列表,输出每一个点与原点的距离。(每 一个点的X、Y轴可以随机生成)。
THANK YOU
– "人"类都有:姓名,性别,年龄 属性,有说话的方法 . – 张三是一个对象,他的姓名属性的值:张三 性别 的属性的值:男 年龄属性的值:20 张三会说话 – 对象可以叫做类的实例(Instance) – 类不占内存,对象才占内存.
4.2.1 类
• • • • •
1、类的声明语法格式如下: [类的修饰符] class 类名 [:基类名] { //类的成员; }[;]
• 例如,调用前面定义的p对象的成员方法se tdata为:
• p.setxy(101,"Mary");
• 练习1:
• 定义一个学生类,有六个属性,分别为姓名、性别、 年龄、语文、数学、英语成绩。 • 有2个方法:
– 一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同 学还是女同学。 – 两个计算自己总分数和平均分的方法。{显示:我叫XX,这次 考试总成绩为X分,平均成绩为X分}
相关文档
最新文档