文档介绍:第5章类与对象
本章目标
●区分类和对象,区分对象声明和对象创建
●区分字段和属性
●定义可实例化类及构造函数
●创建、使用和销毁对象
●使用实例构造函数重载及方法重载
●理解静态成员和实例成员及它们访问方式的区别
●理解成员访问修饰符public和private
●定义实例成员和静态成员
●以对象参数和返回值为对象的方法
类、对象、字段、属性和方法
类是对象的符号表示形式,它是计算机用来创建对象的模板。与蓝图描述构成建筑的项相比较,类以同样的方式描述组成对象的属性、字段和方法等。就像一副蓝图可以用于建成多座建筑一样,一个类也可以根据需要用于创建多个对象。如果使用蓝图作比喻,那么类就是蓝图,对象就是基于该蓝图的建筑。又如,人是一个类,每一个人都是人类的实例或称对象。一个类描述一类事物,描述这些事物应具有的属性,如人有姓名、性别、年龄、民族等。一个对象是类的一个实例,它具有确定的属性,如王飞(人的实例)年龄20,男,汉族。人类只有一个,而人类的实例可以有无数多个。
类可以定义对象的属性和可执行的操作(方法、事件),并定义保存对象状态(字段)的值。
实例构造函数
默认实例构造函数
字段初始化
构造函数声明
实例构造函数是与类同名的特殊方法成员,它是实现初始化类实例所必需操作的成员,在 C# 中不允许使用未初始化的变量,因此在执行构造函数之前,对象是不可用的。
默认实例构造函数
在C#中,如果类不包含任何实例构造函数声明,则自动提供一个默认的无参数的实例构造函数,并使用默认值初始化对象字段(例如,int 字段将初始化为 0)。如以上定义的Person类中并未声明任何实例构造函数,系统自动提供一个默认实例构造函数Person( ),同时将字段初始化为它们的默认值(基本数据类型字段为0,bool字段为false,而引用为null)。注意,myage 的默认值为 0,myname 的默认值为 null。
返回
字段初始化
字段(无论是静态字段还是实例字段)的初始值都是字段类型默认值,在此默认初始化发生之前是不可能看到字段的值的,因此字段永远不会是“未初始化的”。
返回
构造函数声明
在类中声明构造函数时必须指定标识符和构造函数体且标识符必须命名为声明构造函数的类名。即:
类名称(可选形参表){块}
返回
实例构造函数重载
实例构造函数是与类同名的特殊方法,当类定义中含有两个以上其参数个数或类型或种类不同的实例构造函数时,称为实例构造函数重载。当对不同数据类型进行操作时,重载非常有用,因为重载提供了对可用数据类型的选择,所以它使得实例构造函数的使用更为方便灵活。
析构函数
实例构造函数用来初始化类实例,除此之外,C#还提供了另一个特殊的函数成员,即析构函数,析构函数用于销毁类的实例,释放被这些类实例所占用的资源。析构函数没有任何参数,也不返回任何值,其函数名称与类名称相同,但应在其前面加上符号“~”。析构函数是自动调用的,程序员无法控制何时调用析构函数。当任何代码都不再可能使用一个实例时,该实例就符合被销毁的条件。可以在实例符合被销毁条件之后的任何时间执行实例的析构函数。程序退出时也会调用析构函数。
对象成员与类的成员
类是类型而不是对象,一般在类里定义的成员是每个由此类产生的对象都拥有的,因此可以称之为对象成员,但是有时需要让类的所有对象在类的范围内共享某个成员,而这个成员不属于任何由此类产生的对象,它是属于整个类的,这种成员称之为静态成员。
对象参数与返回值为对象
对象参数
返回值为对象
类是引用类型,引用类型变量的值为该变量引用对象的地址,类类型的变量包含对数据的引用(该变量称为对象变量)。对于类,两个变量可能引用同一对象,因此对一个变量进行的操作可能影响另一个变量所引用的对象。