《第5章 面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《第5章 面向对象编程基础.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5.4 属性属性n5.4.1 属性的声明属性的声明n5.4.2 属性的访问属性的访问5.4.1 属性的声明属性的声明nC#不提倡将成员变量的访问权限指定为public,使用户可以直接读写成员变量的值,这样做不安全。为了实现数据的封装和隐藏,类中成员变量的访问权限一般都设为private或protected,数据成员封装在类的内部,在外界可以通过公有属性进行访问。n属性本身不能存储任何数据,只是提供了一种访问成员变量的接口,并可以根据需要在读写成员变量时进行某些检查、警告等额外操作。5.4 属性属性5.4.1 属性的声明属性的声明n在类中声明属性的格式:class 类名类名修饰符修饰符 数据类型
2、数据类型 属性名属性名 访问器声明访问器声明其中:l“修饰符”与方法修饰符相同,包括:访问权限修饰符(public、internal、protected、private)、静态(static)、虚方法(virtual)、抽象(abstract)、重载(override)和隐藏(new)修饰符。l“数据类型”表示属性值的类型,可以是任何数据类型。5.4 属性属性5.4.1 属性的声明属性的声明n属性访问器声明格式如下:get /读访问器 /代码块set /写访问器 /代码块 get 访问器是一个不带参数的方法,用于获取属性成员的值(通过return语句)。set 访问器是带有一个名为“value
3、”参数的方法,用于设置成员变量的值。属性如果同时包含 get 和 set 访问器,则为可读写属性;如果只包含 get 访问器,则为只读属性;如果只包含 set 访问器,则为只写属性。5.4 属性属性5.4.2 属性的访问属性的访问n属性的访问与成员变量的访问相同。当通过属性名读取属性成员时,系统会自动调用其 get 访问器。当通过属性名给属性成员设置值时,系统会自动调用其 set 访问器。n代码示例代码示例5.4 属性属性5.5 构造函数构造函数n5.5.1 构造函数的声明构造函数的声明n5.5.2 构造函数的调用构造函数的调用n5.5.3 基类构造函数的调用基类构造函数的调用n5.5.4 静
4、态构造函数静态构造函数n5.5.5 析构函数析构函数5.5.1 构造函数的声明构造函数的声明n与类的其它方法一样,构造函数也有两种:实例构造函数和静态构造函数。实例构造函数是在用new关键字创建类的对象时由系统自动调用,每创建一个类的实例都会调用一次实例构造函数,主要用于初始化实例成员变量;静态构造函数是在类的第一次引用前由系统自动调用,并且仅执行这一次,主要用于初始化静态成员变量。5.5 构造函数构造函数5.5.1 构造函数的声明构造函数的声明n在类中定义实例构造函数的一般格式:class 类名类名 public 类名类名(形参列表形参列表)/定义构造函数 /函数体 n实例构造函数的特点:l
5、实例构造函数的函数名与类名相同。l实例构造函数没有返回值类型。l实例构造函数一般为public。n如果在类中没有定义任何实例构造函数,则编译器会提供一个默认的无参实例构造函数,该构造函数的函数体为空,仅仅负责创建类的实例。n注意:如果类中定义了构造函数,则系统永远不会调用默认构造函数5.5 构造函数构造函数5.5.2 构造函数的调用构造函数的调用n与类的其它方法一样,构造函数也可以有参数,也可以重载。n代码示例代码示例5.5 构造函数构造函数5.5.3 基类构造函数的调用基类构造函数的调用n在派生类中调用直接基类实例构造函数的一般格式:class 类名类名:基类名基类名 public 类名类名
6、(形参列表形参列表):base(实参列表实参列表)/函数体 n代码示例代码示例5.5 构造函数构造函数5.5.4 静态构造函数静态构造函数n在类中定义静态构造函数的一般格式:class 类名类名 static 类名类名()/定义静态构造函数 /函数体 n静态构造函数的特点:l静态构造函数的不能带有任何参数。l静态构造函数不能有访问修饰符。n代码示例代码示例5.5 构造函数构造函数5.5.5 构造函数的执行序列构造函数的执行序列n在实例化一个类的对象时,会一直追溯到这个类的继承层次中最上层的类,即 System.Object 类,首先执行 Object 类的构造函数,然后从上至下依次执行继承层次
7、中各类的构造函数。n代码示例代码示例5.5 构造函数构造函数5.5.6 析构函数析构函数n析构函数也是一种特殊的方法,与构造函数相对应,专门用于销毁对象。当对象不再使用时,系统会自动调用析构函数,销毁对象并释放其所占用的内存空间。5.6 析构函数析构函数5.5.6 析构函数析构函数n在类中定义析构函数的一般格式:class 类名类名 类名类名()/函数体 n析构函数的特点:l析构函数没有访问修饰符。l析构函数没有返回值类型。l析构函数没有参数。n在销毁一个类的对象时,也会一直追溯到这个类的继承层次中最上层的类,即 System.Object 类,首先执行本类的析构函数,然后从下向上依次执行继承层次中各类的析构函数,直到调用 Object 类的析构函数为止,其执行顺讯正好与构造函数相反。n代码示例代码示例5.6 析构函数析构函数