第5章面向对象编程基础.ppt
《第5章面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《第5章面向对象编程基础.ppt(52页珍藏版)》请在三一文库上搜索。
1、第5章 面向对象编程基础,本章要点,通过本章的学习,使读者: 了解并掌握类的概念和定义方法 掌握类的实例对象的创建和使用方法 了解并掌握构造函数的定义和使用方法 理解和掌握方法的参数传递和方法的重载 了解静态成员与实例成员的区别及特点,案例:交通工具,问题: 解决交通工具中客车的一些相关问题 。,交通工具要解决的问题 能显示该车能乘坐的乘客的数量、车轮数量、车牌号和车本身的重量,要求每次速度调整时能显示是否在安全行驶速度的范围内。,类和对象,类是 C# 中的一种结构,是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。用于在程序中模拟现实
2、生活的事物.,对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。,5.2 类,5.2.1 类的声明 类是C#的一种自定义数据类型,其声明格式为: 属性 类修饰符 class 类名 字段声明 构造函数 方法 属性 ,请注意: 类体是以一对大括号开始和结束的,在一对大括号后面可以跟一个分号,也可以省略分号 类体中的成员种类较多,常见的有字段、属性、方法和事件方法(Method) 类的所有成员的声明均需在类体中,class Person private string name; priva
3、te int age; private long ID; public Person(string n, int a, long i) name = n; age = a; ID = i; public void Display() Console.WriteLine(“Name:0“, name); Console.WriteLine(“Age:0“, age); Console.WriteLine(“Name:0“, ID); ,【例5-1】声明一个Person类,包含姓名、年龄和身份证号。,5.2.2 创建类实例,类实例创建格式: 类名 实例名 = new 类名(参数); 例如,创建Pe
4、rson类的实例: Person myTest1 = new Person(“张三”,21,60012); 也可以分两步创建Person类的实例: Person myTest2; MyTest2 = new Person(“张三”,21,60012);,(1) myTest1和myTest2都是类Person的实例化,分配了两块不同的存储空间。但它们的结构相同。 (2) myTest1和myTest2就可以分别访问各自类中的公有类型数据或成员函数。,5.2.3 类成员,类成员包括数据成员和函数成员。,数据成员包括: 类要处理的数据,它包括常数和字段。,函数成员包括: 方法、属性、事件、索引器、
5、运算符、实例构造函数、析构函数和静态构造函数。,类的具体成员有以下类型:, 常量:代表与类相关的常数值,是在类中声明的值不变的变量。 字段:类中的变量,相当于C+中的成员变量。 方法:完成类中各种计算或功能操作。 属性:定义类的值,并对它们提供读写操作。 事件:由类产生的通知,用于说明发生了什么事情。 索引器:又称下标指示器,允许编程人员访问数组时,通过索引器访问类的多个实例。 运算符:定义类的实例能使用的运算符。 构造函数:在类被实例化时首先执行的函数,主要完成对象初始化操作。 析构函数:在对象被销毁之前最后执行的函数,主要完成对象结束时的收尾工作。,【例5-2】创建一个学生类,学生类有年龄
6、字段、年龄属性和所属系部常量,class Student /定义学生类 private int nAge;/定义字段nAge private const string sDepartment=“Computer“;/定义常量sDepartment public int Age /定义属性Age get /获取属性值(字段值) return nAge; set/设置属性值(字段值) this.nAge = value; public string Department/只读属性Department get return sDepartment; ,static void Main(string
7、args) Student s = new Student();/创建对象 s.Age = 20; /设置属性值 Console.WriteLine(s.Age); /获取属性值 Console.WriteLine(s.Department); Console.ReadLine(); ,5.2.4 字段,字段是类成员中最基础也较重要的一个成员,是与对象或类相关联的变量。其作用主要是用于保存与类有关的一些数据。它的声明格式与普通变量的声明格式基本相同,声明位置没有特殊要求,习惯上将字段说明放在类体中的最前面。 定义字段的基本格式为:,访问修饰符 数据类型 字段名,先给出客车类的字段定义,clas
8、s Passtrain /类名为Passtrain (客车) /以下为成员字段- int weight; /此车的重量, private int passengers; /私有成员,标准容纳乘客数 public int wheels; /公有成员,该客车的轮子数 public string plate; /公有成员,车牌号 ,字段解析 客车类模型Passtrain中定义了四个成员,分别用于保存客车的重量、可容纳的乘客数、轮子数和车牌号。 在面向对象程序设计中,类里面的成员在定义时一般都要加上访问控制修饰符,以标志该成员在哪些范围能够被访问得到。 若声明成员时没有使用任何修饰符,则该成员被人为是
9、私有的(private) 。,5.2.5 访问修饰符,(1) public 声明公有成员,对公有成员访问不受限制,可以从类的外部、内部和派生类访问公有成员; (2) private 声明私有成员,私有成员只能被类中的成员访问,外部无法访问。 (3) protected 声明保护成员,保护成员可以被类中成员和派生类访问。 (4) internal 声明内部成员,内部成员只有在同一工程中的文件内才是可访问的。 (5) protected internal 只限于当前项目,或者从该项目的类继承的类才可以访问。,访问修饰符,Teacher 类,private 成员,protected 成员,publi
10、c 成员,internal 成员,Student 类,只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员,不可访问,不可访问,可以访问,注意: 若字段定义前面的访问修饰符没有写出,则计算机会默认认为是私有字段private. 对于公有访问(public)字段,我们可以通过“对象名.字段名”的形式访问,对于私有(private)和保护(protected)是不行的,如对于Passtrain 的对象pss我们可以通过语句pss.wheels = 4;为wheels字段赋值,而字段passengers是不行的。,5.2.6 静态成员与实例成员,1. 当用st
11、atic修饰符声明成员叫静态成员,静态成员属于类,为这个类的所有实例所共享。静态成员只能由类来调用,不能由对象调用。 2. 不用static修饰符声明成员,称为实例成员,实例成员属于类的实例。,【实作任务】 客车类定义最大时速的静态成员 class Passtrain /类名为Passtrain (客车) public static float SMAX = 100; /静态公有字段,最大时速 静态成员访问只能通过类名访问,如: class Test static void Main() Console.WriteLine(“客车类的最大时速为:”+ Passtrain.SMAX); ,【例5
12、-3】声明一个含有静态成员和一个实例成员的Student类,class Student public int SNO; public static int count; public Student(int s) SNO=s; count+; public void display() Console.WriteLine(“count=0,SNO=1“, count, SNO); ,class Program static void Main(string args) Student s1 = new Student( 12); s1.display(); Student s2= new St
13、udent(20); s2.display(); 程序输出结果为: count= 1,SNO=12; count= 2,SNO=20; 说 明: (1) 在本例中,count是静态成员,属于类Student,所以, 每生成一个学生实例,静态成员count就自动增一,记录学生总数。 (2) SNO是实例成员,随实例的不同而不同。,5.5 属性,5.5.1属性的定义和使用 类字段一般定义为私有或受保护的,不容许外界访问。若需要外界访问此字段,可以利用属性提供给外界访问私有或保护字段的途径。通常,创建一个属性包含两个步骤: 声明一个私有字段来存储属性值 编写一个属性声明,为属性值提供访问接口。 声明
14、属性的一般形式为:,访问修饰符 类型名 属性名 get return 私有字段; set 私有字段 = value; ,【例5-15】属性的最基本形式和用法(属性的读写控制),public class Student private string studName; private int studID; public string StudentName get return studName; set studName = value;/value是关键字 public class Test public static void Main(string args) Student Astu
15、dent = new Student(); Astudent.StudentName = “Zhang San”; string aName = Astudent.StudentName; Console.WriteLine(aName); ,5.5.2属性的读写控制,【例5-16】 属性的读写控制。 public class Student string studName;int studID; pulic Student(string strName) studName = strName; public string StudentName get return studName; pu
16、blic class Test public static void Main(string args) Student Astudent = new Student(“Zhang San”); string aName = Astudent.StudentName; Console.WriteLine(aName); ,class Passtrain /类名为Passtrain (客车) /以下为成员字段- int weight; /此车的重量, private int passengers; /私有成员,标准容纳乘客数 public int wheels; /公有成员,该客车的轮子数 pu
17、blic string plate; /公有成员,车牌号 /以下为成员属性- /以下声明公有访问属性以访问私有的weight成员,【实作任务】 客车类的属性声明续 public int Weight get return weight; /提供对weight的读权限 set weight = value; /提供对weight的写权限 /以下声明公有访问属性以访问私有的passengers成员 public int Passengers get return passengers; /提供对passengers的读权限 ,作业1,创建一个表示羚羊的类,并且创建一个该类的对象。 羚羊Antelo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 基础
链接地址:https://www.31doc.com/p-3431235.html