第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;private int age
3、;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 类名(参数);例如,创建Person类的实例:Person myTest1=new Person(“张三”,2
4、1,60012);也可以分两步创建Person类的实例:Person myTest2;MyTest2=new Person(“张三”,21,60012);,(1)myTest1和myTest2都是类Person的实例化,分配了两块不同的存储空间。但它们的结构相同。(2)myTest1和myTest2就可以分别访问各自类中的公有类型数据或成员函数。,5.2.3 类成员,类成员包括数据成员和函数成员。,数据成员包括:类要处理的数据,它包括常数和字段。,函数成员包括:方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。,类的具体成员有以下类型:,常量:代表与类相关的常数值,是在类
5、中声明的值不变的变量。字段:类中的变量,相当于C+中的成员变量。方法:完成类中各种计算或功能操作。属性:定义类的值,并对它们提供读写操作。事件:由类产生的通知,用于说明发生了什么事情。索引器:又称下标指示器,允许编程人员访问数组时,通过索引器访问类的多个实例。运算符:定义类的实例能使用的运算符。构造函数:在类被实例化时首先执行的函数,主要完成对象初始化操作。析构函数:在对象被销毁之前最后执行的函数,主要完成对象结束时的收尾工作。,【例5-2】创建一个学生类,学生类有年龄字段、年龄属性和所属系部常量,class Student/定义学生类 private int nAge;/定义字段nAge p
6、rivate 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 args)Student s=new Student();/创建对象 s.Age=20;/设置属性值 Console.WriteLine(s.Age)
7、;/获取属性值 Console.WriteLine(s.Department);Console.ReadLine();,5.2.4 字段,字段是类成员中最基础也较重要的一个成员,是与对象或类相关联的变量。其作用主要是用于保存与类有关的一些数据。它的声明格式与普通变量的声明格式基本相同,声明位置没有特殊要求,习惯上将字段说明放在类体中的最前面。定义字段的基本格式为:,访问修饰符 数据类型 字段名,先给出客车类的字段定义,class Passtrain/类名为Passtrain(客车)/以下为成员字段-int weight;/此车的重量,private int passengers;/私有成员,标
8、准容纳乘客数 public int wheels;/公有成员,该客车的轮子数public string plate;/公有成员,车牌号,字段解析 客车类模型Passtrain中定义了四个成员,分别用于保存客车的重量、可容纳的乘客数、轮子数和车牌号。在面向对象程序设计中,类里面的成员在定义时一般都要加上访问控制修饰符,以标志该成员在哪些范围能够被访问得到。若声明成员时没有使用任何修饰符,则该成员被人为是私有的(private)。,5.2.5 访问修饰符,(1)public 声明公有成员,对公有成员访问不受限制,可以从类的外部、内部和派生类访问公有成员;(2)private声明私有成员,私有成员只
9、能被类中的成员访问,外部无法访问。(3)protected声明保护成员,保护成员可以被类中成员和派生类访问。(4)internal声明内部成员,内部成员只有在同一工程中的文件内才是可访问的。(5)protected internal只限于当前项目,或者从该项目的类继承的类才可以访问。,访问修饰符,Teacher 类,private 成员,protected 成员,public 成员,internal 成员,Student 类,只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员,不可访问,不可访问,可以访问,注意:若字段定义前面的访问修饰符没有写出,则计
10、算机会默认认为是私有字段private.对于公有访问(public)字段,我们可以通过“对象名.字段名”的形式访问,对于私有(private)和保护(protected)是不行的,如对于Passtrain 的对象pss我们可以通过语句pss.wheels=4;为wheels字段赋值,而字段passengers是不行的。,5.2.6 静态成员与实例成员,1.当用static修饰符声明成员叫静态成员,静态成员属于类,为这个类的所有实例所共享。静态成员只能由类来调用,不能由对象调用。2.不用static修饰符声明成员,称为实例成员,实例成员属于类的实例。,【实作任务】客车类定义最大时速的静态成员cl
11、ass Passtrain/类名为Passtrain(客车)public static float SMAX=100;/静态公有字段,最大时速静态成员访问只能通过类名访问,如:class Test static void Main()Console.WriteLine(“客车类的最大时速为:”+Passtrain.SMAX);,【例5-3】声明一个含有静态成员和一个实例成员的Student类,class Student public int SNO;public static int count;public Student(int s)SNO=s;count+;public void dis
12、play()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 Student(20);s2.display();程序输出结果为:count=1,SNO=12;count=2,SNO=20;说 明:(1)在本例中,count是静态成员,属于类Student,所以,每生成一个学生实例,静态成员count就自动增一,记录学生总数。(2)SNO是实例成员,随实例的不同而不
13、同。,5.5 属性,5.5.1属性的定义和使用 类字段一般定义为私有或受保护的,不容许外界访问。若需要外界访问此字段,可以利用属性提供给外界访问私有或保护字段的途径。通常,创建一个属性包含两个步骤:声明一个私有字段来存储属性值 编写一个属性声明,为属性值提供访问接口。声明属性的一般形式为:,访问修饰符 类型名 属性名get return 私有字段;set 私有字段=value;,【例5-15】属性的最基本形式和用法(属性的读写控制),public class Studentprivate string studName;private int studID;public string Stud
14、entName get return studName;set studName=value;/value是关键字public class Testpublic static void Main(string args)Student Astudent=new Student();Astudent.StudentName=“Zhang San”;string aName=Astudent.StudentName;Console.WriteLine(aName);,5.5.2属性的读写控制,【例5-16】属性的读写控制。public class Studentstring studName;in
15、t studID;pulic Student(string strName)studName=strName;public string StudentName get return studName;public class Testpublic static void Main(string args)Student Astudent=new Student(“Zhang San”);string aName=Astudent.StudentName;Console.WriteLine(aName);,class Passtrain/类名为Passtrain(客车)/以下为成员字段-int
16、 weight;/此车的重量,private int passengers;/私有成员,标准容纳乘客数 public int wheels;/公有成员,该客车的轮子数 public string plate;/公有成员,车牌号/以下为成员属性-/以下声明公有访问属性以访问私有的weight成员,【实作任务】客车类的属性声明续public int Weight get return weight;/提供对weight的读权限 set weight=value;/提供对weight的写权限/以下声明公有访问属性以访问私有的passengers成员 public int Passengers get
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 基础
链接地址:https://www.31ppt.com/p-5638827.html