内容正文:
7.2 类(二)
算法与程序设计--C#
同步精品课堂
河北科学技术出版社
教学目标
一
理解类的对象的概念,掌握如何创建和使用类的对象
掌握 this 关键字的作用和使用场景
掌握类的属性的定义和使用
教学目标
01
02
03
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学重难点
二
教学难点
1、类的对象的创建和使用
2、类的属性的定义和使用
3、this 关键字的作用和使用场景
教学重点
1、 this 关键字在不同场景下的使用
2、对象的生命周期
教学难点
导入新课
三
讨论:
上节课,我们学习了类的概念。以“汽车”为例,汽车的设计图纸是类,具体的某辆汽车是对象。汽车的属性(颜色、品牌、速度)和行为(加速、刹车)可以通过类和对象来描述。那么类和对象之间是什么关系呢?
任务一
1
对象
新知讲授
四
对象的概念
类是抽象的模板,用于描述对象的特征(属性)和行为(方法)。对象是类的实例,具有类定义的属性和方法。
对象可以认为是在一类事物中抽象出某一个特例,通过这个特例来处理这类事物的问题。在写好一个类这后,我们需要创建这个类的对象。那么,创建这个类的对象的过程称之为类的实例化。使用关键字new 来完成的,这个操作符分配内存并调用类的构造函数来初始化对象。
新知讲授
四
➽ 说明:
(1)ClassName是类的名称;
(2)objectName是创建ClassName类对象的名称;
(3)new是创建对象操作的符;
(4)构造函数会在对象创建时自动调用,用于执行对象的初始化;
➽ 语法
ClassName objectName = new ClassName();
新知讲授
四
访问对象的成员
用户使用new操作符创建一个对象后,便可以使用“对象.类成员”来访问对象的成员,对象的成员包括字段、属性和方法。
(1)访问字段:使用对象名称,后跟字段名称,可以读取或设置字段的值。
(2)访问属性:使用对象名称,后跟属性名称,可以读取或设置属性的值。
(3)调用方法:使用对象名称,后跟方法名称,并可以传递所需的参数。
新知讲授
四
访问对象的成员
在实例化对象时,程序会自动为类中的字段进行初始化默认值,针对不同类型的字段,会赋予不同的初始值。
字段类型 初始值 字段类型 初始值
byte 0 double 0.0D
short 0 char ‘\0’
int 0 boolean false
long 0L 引用数据类型 null
Demical 0.0M
新知讲授
四
➽示例:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHello()
{ Console.WriteLine("Hello, my name is " + Name); }
}
创建对象:
Person person = new Person { Name = "John", Age = 30 };
person.SayHello();
新知讲授
四
对象的生命周期
C#对象的生命周期实际上包括五个主要阶段,分别是:创建、使用、不可访问、垃圾回收、销毁。这五个阶段涵盖了对象从创建到销毁的整个生命周期。在实际编程中,我们通常关注创建、使用和销毁这三个阶段,但不可访问和垃圾回收阶段也是对象生命周期的重要组成部分。
(1)创建:对象的创建是通过调用构造函数来完成的。内存被分配,对象的状态被初始化。
(2)使用:对象在其生命周期内用于执行各种操作和任务。对象的字段和属性可能会被多次读取和修改。
(3)对象在不再被需要时会被垃圾回收。垃圾回收器负责释放对象占用的内存。
任务二
2
属性
新知讲授
四
属性的概念
属性用于封装类的字段,提供对字段的访问控制。属性是类成员,用于访问和控制类的字段(数据成员)。属性提供了对字段的封装,使你可以通过属性来读取和修改字段的值,而不直接暴露字段。对于属性的理解其实并不难,相信大家都玩过游戏,其实在游戏中就能找到属性,比如英雄人物属性,常见的有攻击、生命值、法术伤害、防御等;而物品属性是用来加强英雄人物属性的,如加强法术攻击值、加强抗性等。
属性通常包括两个访问器:get 访问器用于获取属性值,set 访问器用于设置属性值。属性的主要作用是提供更严格的访问控制和数据验证。
新知讲授
四
属性的概念
属性是字段的包装器:属性允许你通过类的接口来访问和操作字段,而不需要直接暴露字段。
属性提供读取和写入的控制:你可以定义只读属性(仅有 get 访问器)或读写属性(有 get 和 set 访问器)。
属性可以包含逻辑:属性的 get 和 set 访问器可以包含逻辑,例如输入验证或计算。
新知讲授
四
属性的声明
➽语法
访问修饰符 数据类型 属性名
{ get
{ return 变量名;}
set
{ 变量名=value;}
}
➽示例
class Person
{ private string name;
public string Name
{
get { return name; }
set { name = value; }
} }
新知讲授
四
访问器(get和set)
属性的访问器使你可以控制属性的行为,以满足特定需求。get和set都存在:读写属性;只有get时:只读属性;只有set时:只写属性。
get访问器:用于获取属性的值。访问器允许你自定义属性的读取和写入逻辑。
➽示例
public int MyProperty
{ get
{ return someField + anotherField; }
}
新知讲授
四
访问器(get和set)
set 访问器:用于设置属性的值。可以在set访问器中执行逻辑,例如输入验证或将值分配给多个字段。
➽示例
public int MyProperty
{ set
{ if (value >=0) { someField = value; }}
}
新知讲授
四
➽ 示例
class Person
{
private string name; // 私有字段
// 属性
public string Name
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.Name = "张三"; // 设置属性值
Console.WriteLine("姓名:”+person.Name);
// 获取属性值
}
}
任务三
3
this关键字
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
this 关键字是一个引用变量,它指向当前对象的实例。在类的方法中,可以使用 this 关键字来引用当前对象的属性、方法或构造函数。
1、使用this关键字访问属性:C#语言中可以使用this关键字用于在类的方法内引用本类对象的成员。它是一个特殊的引用,可以用于消除成员名称的歧义。通过使用this关键字,我们可以访问当前对象的属性。
2、使用this关键字调用成员方法:this关键字可以用于在类的方法内调用其他成员方法,这对于避免方法名称冲突和调用不同重载版本的方很有帮助。
3、使用this关键字调用构造方法:this关键字可以用于在一个构造方法中调用同一类的其他构造方法,这称为构造函数重载。这对于避免在不同构造方法中重复初始化代码很有用。
this关键字的概念
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
➽ 使用this关键字访问属性代码示例
class Student
{
private string name;
public Student(string name)
{
this.name = name; // 使用this区分字段和参数
}
}
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
➽ 使用this关键字调用成员方法代码
public class MyClass {
public void MethodA()
{ Console.WriteLine("MethodA"); }
public void MethodB()
{
Console.WriteLine("MethodB");
this.MethodA();//使用this关键字调用另一个方法
}
}
模式窗体就是当该窗体显示时,其他窗体不可用,只有将模式窗体关闭之后,其他窗体才能恢复可用状态。
模式窗体使用ShowDialog()方法显示窗体,
新知讲授
四
➽ 使用this关键字调用构造方法
public class MyClass
{
private int value;
public MyClass()
{ this.value = 0; }
public MyClass(int value):this()
{ this.value = value; }
}
师生互动
五
1、总结类与对象的关系;
2、总结this关键字的使用场景;
讨论
随堂练习
六
1、在C#中,对象是类的________。
答案:实例
解析:类是抽象的,对象是类的实例。
2、在C#中,创建类的对象使用______关键字。
答案:new
解析:new用来创建一个对象。
随堂练习
六
3、要创建一个类Person的对象,以下正确的代码是( )
A. Person person;
B. Person person = new Person();
C. new Person();
D. Person = new person();
答案:B
解析:创建类的对象需要使用new关键字,格式为类名 对象名 = new 类名()
随堂练习
六
4、 关于对象的生命周期,以下正确的是()
A. 对象的生命周期从构造函数调用开始
B. 对象的生命周期从析构函数调用开始
C. 对象的生命周期从垃圾回收开始
D. 对象的生命周期从程序启动开始
答案:A
解析:对象的生命周期从构造函数调用开始,到垃圾回收结束。
随堂练习
六
5、关于属性,以下正确的是( )
A. 属性是字段的封装
B. 属性可以没有get访问器
C. 属性可以没有set访问器
D. 以上都是正确的
答案:D
解析:属性是字段的封装,可以只有get或set访问器
随堂练习
六
6、在类的构造函数中,使用this()的作用是( )
A. 调用当前类的静态方法
B. 调用当前类的其他构造函数
C. 调用当前类的父类构造函数
D. 调用当前对象的属性
答案:B
解析:在构造函数中使用this()可以调用当前类的其他构造函数,实现构造函数的复用。调用父类构造函数使用base();this不能用于调用静态方法;this也不是用于直接调用对象属性的
课堂小结
七
谢谢
$$