第7章 面向对象编程技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章面向对象编程技术
第一讲类和对象、属性、方法
教学目标
1. 理解类和对象的概念。
2. 掌握类和对象的定义和使用。
3. 掌握值类型变量和引用类型变量的区别。
4. 掌握三种访问修饰符及其含义。
教学过程
预备知识
7.1 类和对象
7.1.1 类和对象概述
现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。
类是一种数据类型,在C#中,类分为两种:由系统提供的预先定义的,这些类在.NET框架类库中;用户定义数据类型。
在创建对象之前必须先定义该对象所属的类。然后由类声明对象。
在Visual 集成环境中的,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创建的对象。
7.1.2 类定义
在类定义中需要使用关键字class,其简单的定义格式为:
class 类名 {类体}
“类名”是一个合法的C#标识符,表示数据类型(类类型)名称,“类体”以一对大括号开始和结束。在一对大括号后面可以跟一个分号,也可以省略分号。例如:
class Student // 类名为Student
{
public string ID;
public string Name;
public string Sex;
}
定义了一个名为“Student”(学生)的类,类体中包括学生的学号(“ID”)、姓名(“Name”)与性别(“Sex”)。
“类体”包括类中的所有数据及对数据的操作,面向对象程序设计将数据与对数据的操作作为一个整体,以类的形式进行定义,这种机制叫“封装”。
在“类体”中,所有的数据及对数据的操作的集合叫类成员,类成员的种类很多,本章仅介绍“字段”、“属性”、“方法”与“构造函数”。
“字段”是类定义中的数据,也叫类的变量。在上例中定义的“ID”、“Name”与“Sex”等均为类中的字段。如果需要在类定义的多个方法中使用某个变量,该变量应该声明为字段。
“属性”用于读取和写入“字段”值,“属性”是字段的自然扩展,对用户而言,“属性”等同于“字段”本身,对程序员而言,属性是一种读写“字段”的特殊方法。
“方法”实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作,以实现特定的功能。
7.1.3 声明与使用对象
1. 声明对象
声明对象的格式与声明基本数据类型的格式相同,其语法格式为:
类名对象名;
例如:Student s1; // 声明一个学生类对象s1
对象声明后,需用“new”关键字将对象实例化,。实例化的语法格式:
对象名=new 类名( );
例如:s1=new Student( ); // 为s1分配内存
Student s1 =new Student( ); \\声明的同时实例化
2. 访问对象
访问对象实质是访问对象成员,对对象变量成员的访问使用“.”运算符。例如:
s1.ID="2005001";
="张三";
s1.Sex="女";
使用对象变量为另一对象变量整体赋值,例如,“Student s2;s2=s1;”或“Student s2= s1;”。
可以使用对象中的某一成员为变量赋值。例如:
string sName=;
7.1.4 值类型与引用类型
1. 值类型
值类型变量直接包含其本身的数据,因此每个值类型变量本身就包含有赋给它的值。
在C#中,内置数据类型除了字符串(string)类型与对象(object)类型外其余均为值类型。枚举类型与结构类型也是值类型。例如“int x =42;”,整型变量x就是值类型。
2. 引用类型
与值类型不同,引用类型变量本身不包含数据,只是存储对数据的引用,数据保存在内存的其他位置。
7.1.5 访问控制
C#中最常用的访问修饰符及其意义 :
public(公有):访问不受限制,可以被任何其他类访问
private(私有):访问只限于含该成员的类,即只有该类的其他成员能访问protected(保护):访问只限于含该成员的类、及该类的派生类如果声明成员没有使用任何访问修饰符,则该成员被认为是私有的
(private)。如果成员被声明为private或protected,则不允许在类定义外使用点运算符访问。
7.2 属性
7.2.1 声明属性
在类定义中声明属性的语法格式为:
访问修饰符类型属性名
{
get { }
set{ }
}
class Student // 类名为Student
{
private string name; // 声明字段
public string Name // 对应name的属性
{
get
{ return name; }
set
{ name=value; }
}
}
2. 声明只读或只写属性
在属性声明中,如果只有get访问器,则该属性为只读属性。例如:public string Sex
{
get
{
return sex;
}