面向对象的编程技术对象和属性等.ppt

上传人:牧羊曲112 文档编号:6613925 上传时间:2023-11-18 格式:PPT 页数:34 大小:234.16KB
返回 下载 相关 举报
面向对象的编程技术对象和属性等.ppt_第1页
第1页 / 共34页
面向对象的编程技术对象和属性等.ppt_第2页
第2页 / 共34页
面向对象的编程技术对象和属性等.ppt_第3页
第3页 / 共34页
面向对象的编程技术对象和属性等.ppt_第4页
第4页 / 共34页
面向对象的编程技术对象和属性等.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《面向对象的编程技术对象和属性等.ppt》由会员分享,可在线阅读,更多相关《面向对象的编程技术对象和属性等.ppt(34页珍藏版)》请在三一办公上搜索。

1、C#程序设计语言课程内容,第一章:概述第二章:C#语言的基本原理第三章:C#中对象的创建第四章:面向对象的编程技术第五章:C#编程第六章:编写基于.NET 的应用 程序第七章:使用 ADO.NET 访问 数据,第八章:创建基于 Windows 的应用程序第九章:在 C#应用程序中使 用 XML Web Service第十章:创建 Web 应用程序十一章:应用程序设置和 部署十二章:进阶学习目标,面向对象的编程技术,内容:,设计对象 继承性 多态性,C#,设计对象 4.1,学习完本节后,你将能够:在对象中封装信息使用属性管理对封装数据的访问,将类的某些数据和操作这些数据的代码隐藏起来,这就是封装

2、封装的好处:可以隐藏类实现的细节简化用户的使用易于软件的更新、修订、维护。可以修改内部实现,但不影响用户的使用,访 问 修 饰 符,使用访问修饰符,可以定义应用程序中类成员的作用域(可见性),属性是“聪明”的字段,“特殊”的方法定义属性类似于定义一个方法,但使用属性时如同使用一个字段,class Cat public string name;public int age;,static void Main()Cat cat1=new Cat();cat1.age=-13;/错误,语法:,public|protected 数据类型 属性名 get/get访问器,获取属性的代码 set/set访问

3、器,设置属性的代码,示例:,public class Cat private int age;public int Age get return age;set if(value=20)报告出错 else age=value;,示例:,Cat cat1=new Cat();cat1.Age=1;/使用Age属性的set访问器int n=Cat.Age;/使用Age属性的get访问器cat1.Age=100;/收到错误消息,如果只提供了get,没有set,这样的属性为只读属性如果只提供了set,没有get,只写属性优点:属性在使用时类似于类的字段,简单属性在实现时类似于方法,可以编写代码控制用户

4、对数据的存、取,增加安全性检查可以设置只读或只写属性,练 习,参见教材P101页4.1.4 课堂练习,10 分钟,面向对象的编程技术,内容:,设计对象 继承性 多态性,C#,继 承 性 4.2,定义基类 创建派生类 创建密封类,“A”is a kind of“B”,猫是一只动物,阿土仔是一个人“A”is a kind of“B”,说明B是A的一个父类,A是B的子类(基类/派生类)子类无条件的接收父类具有的特性,包括属性和方法,这就叫做继承继承允许把公共的属性和方法包含在基类中得到重用,此外,子类还可以添加自己的特性 利用继承,可以以现有的类为基础,创建出新的类,实现了代码的重用,继承描述了“是

5、什么种类”(is a kind of)的关系派生类从基类继承属性和方法,实现了代码重用派生类变得更专门化在C#中只支持单一继承,即每个子类只能有一个父类,父类,子类,动物,示例:动物园需要管理3种动物,羚羊,狮子,大象,public class Antelope public bool IsSleeping;public void Sleep()public void Eat()public class Lion public bool IsSleeping;public void Sleep()public void Eat()public void StalkPrey()public cl

6、ass Elephant public bool IsSleeping;public void Sleep()public void Eat()public int CarrayCapacity;,public class Animal public bool IsSleeping;public void Sleep()public void Eat()public class Antelope:Animalpublic class Lion:Animal public void StalkPrey()public class Elephant:Animal public int Carray

7、Capacity;,示例:,public class Animal protected bool IsSleeping;public void Sleep()public void Eat()public class Lion:Animal public void StalkPrey().Lion adoptedLion=new Lion();adoptedLion.StalkPrey();adoptedLion.Eat();,base 指代一个对象的父类/基类当子类中的成员与父类成员重名是,父类的成员被隐藏base 的作用:点取父类中被子类隐藏了的成员变量点取被子类覆盖了的方法作为方法名表示

8、父类的构造函数,public Animal public void method1()public class Lion:Animal/将父类的同名方法隐藏 public void method1()public Lion()this.method1();base.method1();,使用sealed关键字声明密封类密封类不允许其他类继承该类密封的方法不允许被覆盖如果你的类不希望被别人继承、修改,为安全起见,把它们定义为sealed吧!,public sealed class MyClass/class members,练 习,参见教材P108页4.2.5 课堂练习,10 分钟,面向对象的编

9、程技术,内容:,设计对象 继承性 多态性,C#,多 态 4.3,通过在基类中使用虚方法来实现多态性创建和使用抽象类,具有多种不同的形态,这种能力称为多态性子类继承了父类的特性,但子类在某些细节上各不相同,多种多样,如何做到这一点呢?,Animal对象,Elephant,Cat,Mouse,行为,Eat Grass,Eat Mouse,Eat Cheese,被调用的方法,Eat(),Eat(),Eat(),如果希望某个方法的实现能够在子类中进一步得到改进,那么将方法定义为虚方法使用virtual关键字定义虚方法 这样子类就可以改进从父类继承下来的Eat方法了,public class Anima

10、l public virtual void Eat()Console.WriteLine(Eat something);,如果希望改进父类的某个虚方法,使用override关键字覆盖父类的方法,提供自己的实现就可以了当覆盖虚方法时,覆盖的方法必须与被覆盖的方法具有相同的方法签名 这样子类就可以有与众不同的Eat方法了,public class Cat:Animal public override void Eat()Console.WriteLine(Eat mouse!);,当调用某个虚方法时,运行时会根据具体对象的类型,动态决定调用哪个方法。,public class Animal pub

11、lic virtual void Eat()Console.WriteLine(Eat something);public class Cat:Animal public override void Eat()Console.WriteLine(Eat mouse!);Animal myCat=new Cat();myCat.Eat();/输出:Eat mouse!,动物饲养员public class AnimalTrainer public void FeedAnimal(Animal a)a.Eat();static void Main()Elephant myElephant=new E

12、lephant();Cat myCat=new Cat();Mouse myMouse=new Mouse();AnimalTrainer marry=new AnimalTrainer();marry.FeedAnimal(myElephant);/Eat Grass marry.FeedAnimal(myCat);/Eat Mouse marry.FeedAnimal(myMouse);/Eat Cheese,抽象方法只有方法声明,但没有方法实现,是一个空方法抽象的方法隐式为虚方法,必须被覆盖抽象类:包含了抽象方法的类必须声明为抽象类只能被继承,但不能创建一个抽象类的对象实例使用abstr

13、act关键字定义抽象类和抽象方法如果你的某个类的方法不知道该如何实现,实现的细节是由子类决定的,那么把它定义成abstract吧!,class Shape public string name;public double GetArea()?,思考题:为什么使用抽象方法 定义一个shape类,表示各种几何图形,方法getArea()用来计算图形的面积,该如何实现这个方法呢?,?,三角形,正方形,圆形,不同的几何图形面积的计算公式不同,显然在这里没法实现,class 圆形:Shape public override double GetArea()area=R2;,class 三角形:Shape

14、 public override double GetArea()area=(底*高)/2;,abstract class Shape public abstract double GetArea();/没有方法体,解决办法:定义为abstract,让各个子类自己去实现吧。,?,练 习,参见教材P115页4.3.4 课堂练习,10 分钟,简易性对象反映了现实世界的元素,使程序更容易设计封装性隐藏了重要的数据和实现细节,易于代码维护,更安全继承性实现了代码重用,提高了开发效率多态性实现了现实世界对象的多样性和差异性聚合性对象是独立的单元,由简单的对象组装成复杂的对象,面向对象编程就是“累”啊!,小 憩 片 刻,我想,想,想,?,int x1=10;int x2=x1;x1+;/此时 x1=?,x2=?Animal cat1=new Animal();/Animal是一个类cat1.age=10;/设置年龄Animal cat2=cat1;cat1.age+;/此时 cat1.age=?cat2.age=?(10个积分),1,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号