抽象类与密封类

抽象类与密封类

ID:65484786

大小:203.00 KB

页数:20页

时间:2022-01-09

抽象类与密封类_第1页
抽象类与密封类_第2页
抽象类与密封类_第3页
抽象类与密封类_第4页
抽象类与密封类_第5页
抽象类与密封类_第6页
抽象类与密封类_第7页
抽象类与密封类_第8页
抽象类与密封类_第9页
抽象类与密封类_第10页
资源描述:

《抽象类与密封类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、抽象类与密封类抽象类有时候基类并不与具体的事物相联系,而是只表达一种抽象的概念,用以为它的派生类提供一个公共的界面,为此,C#中引入了抽象类abstractclass的概念。定义抽象类的语句格式为:abstractclass类名{……//抽象类的成员定义}抽象类抽象类使用abstract修饰符,对抽象类的使用有以下几点规定:抽象类只能作为其它类的基类,它不能直接被实例化,而且对抽象类不能使用new操作符。抽象类如果含有抽象的变量或值,则它们要么是null类型,要么包含了对非抽象类的实例的引用。抽象类

2、允许包含抽象成员,虽然这不是必须的。抽象类不能同时又是密封的。抽象类abstractclassVehicle//定义汽车类{publicintwheels;//公有成员轮子个数protectedfloatweight;//保护成员重量publicVehicle(intw,floatg){wheels=w;weight=g;}publicvirtualvoidSpeak(){Console.WriteLine("thewvehicleisspeaking!");}};抽象类classCar:Vehic

3、le//定义轿车类{intpassengers;//私有成员乘客数publicCar(intw,floatg,intp):base(w,g){passengers=p;}publicoverridevoidSpeak(){Console.WriteLine("Thecarisspeaking:Di-di!");}};抽象类classTruck:Vehicle//定义卡车类{intpassengers;//私有成员乘客数floatload;//私有成员载重量publicTruck(intw,float

4、g,intp,floatl):base(w,g){passengers=p;load=l;}publicoverridevoidSpeak(){Console.WriteLine("Thetruckisspeaking:Ba-ba!");}};抽象类classProgram{staticvoidMain(string[]args){Carc1=newCar(4,2,5);Truckt1=newTruck(6,5,3,10);c1.Speak();t1.Speak();}}抽象方法由于抽象类本身表达的

5、是抽象的概念,因此类中的许多方法并不一定要有具体的实现,而只是留出一个接口来作为派生类重载的界面。举一个简单的例子,“图形”这个类是抽象的,它的成员方法“计算图形面积”也就没有实际的意义。面积只对“图形”的派生类比如“圆”、“三角形”这些非抽象的概念才有效,那么我们就可以把基类“图形”的成员方法“计算面积”声明为抽象的,具体的实现交给派生类通过重载来实现。抽象方法一个方法声明中如果加上abstract修饰符,我们称该方法为抽象方法(abstractmethod)。在抽象类中定义方法,由于无法为其实例

6、化任何代码,所以也需要将其定义为抽象的,定义格式如下:publicabstractvoid方法名(方法参数);抽象方法abstractclassVehicle//定义汽车类{publicintwheels;//公有成员轮子个数protectedfloatweight;//保护成员重量publicVehicle(intw,floatg){wheels=w;weight=g;}publicabstractvoidSpeak();};抽象方法classCar:Vehicle//定义轿车类{intpasse

7、ngers;//私有成员乘客数publicCar(intw,floatg,intp):base(w,g){passengers=p;}publicoverridevoidSpeak(){Console.WriteLine("Thecarisspeaking:Di-di!");}};抽象方法classTruck:Vehicle//定义卡车类{intpassengers;//私有成员乘客数floatload;//私有成员载重量publicTruck(intw,floatg,intp,floatl):ba

8、se(w,g){passengers=p;load=l;}publicoverridevoidSpeak(){Console.WriteLine("Thetruckisspeaking:Ba-ba!");}};封闭类如果所有的类都可以被继承,继承的滥用会带来什么后果,类的层次结构体系将变得十分庞大,类之间的关系杂乱无章,对类的理解和使用都会变得十分困难,有时候我们并不希望自己编写的类被继承,另一些时候,有的类已经没有再被继承的必要。C#提出了一个密封类sealedcl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。