c#课件抽象方法和抽象类.ppt
《c#课件抽象方法和抽象类.ppt》由会员分享,可在线阅读,更多相关《c#课件抽象方法和抽象类.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、抽象方法和抽象类多态性n在程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性。表现在两方面:q方法的重载。q对象的上转型对象。子类可以改写父类的方法,而上转型对象(父类的对象)可以调用改写后的方法。不同的子类可能改写的内容不同。比如:动物类中的cry()方法,在子类“猫”中可以改写为“喵喵”,而在子类“狗”中可以改定为“汪汪”。猫类的和狗类的上转型对象在调用cry()方法时是各不相同的。n一个类可能会有很多的子类,这些子类中都有共同的行为,但行为的实现方法有所差异,为了迫使在编写子类时均实现这些方法,且保持统一的名称,可以事先在这些子类共同的父类中将方法的类型、名称、形参等确定下来,
2、而方法体在子类中确定,对这种父类并不具体实现这些方法,而只定义了方法类型、名称、形参等的方法称为抽象方法,在定义时需在方法名称前加abstract,具有一个以上抽象方法的类称为抽象类,类名称前也要加修饰词abstract,抽象方法和抽象类n抽象类是指不能被实例化的类,是派生类的基础,通过部分实面或不实现.抽象类可作为其它类的模板.n声明抽象类的语法如下:nabstractclass类名nn.nn1.抽象方法是隐式的虚方法.n2.只允许在抽象类中声明抽象方法n3.抽象方法声明不提供实际的实现,没有方法体,方法声明以一个分号结束,并在声明后没有大括号.n例如:npublicabstractvoid
3、Area();举例n举一个简单的例子,举一个简单的例子,“图形图形”这个类是抽象的,它的成员方法这个类是抽象的,它的成员方法“计算图形面积计算图形面积”也就没有实际的意义。面积只对也就没有实际的意义。面积只对“图形图形”的派生的派生类比如类比如“圆圆”、“正方形正方形”这些非抽象的概念才有效,那么我们这些非抽象的概念才有效,那么我们就可以把基类就可以把基类“图形图形”的成员方法的成员方法“计算面积计算面积”声明为抽象的,声明为抽象的,具体的实现交给派生类通过重载来实现。具体的实现交给派生类通过重载来实现。分析:分析:n抽象类:图形,抽象方法抽象类:图形,抽象方法求面积求面积n(指出:图形必须有
4、求面积的方法,但因为不同图形求面积的方法指出:图形必须有求面积的方法,但因为不同图形求面积的方法不一样,因此将此方法声明为抽象方法不一样,因此将此方法声明为抽象方法)n子类:正方形类,实现了抽象类中求面积的抽象方法。子类:正方形类,实现了抽象类中求面积的抽象方法。n子类:圆,实现了抽象类中求面积的抽象方法。子类:圆,实现了抽象类中求面积的抽象方法。abstractpublicclassDimensions/声明类Dimensions为抽象类protecteddoublex;publicconstdoublePI=Math.PI;publicDimensions(doublex)this.x=x
5、;publicabstractdoubleArea();/在抽象类Dimensions中声明抽象方法Area()publicclassCircle:DimensionspublicoverridedoubleArea()/派生类Circle中必须使用override修饰符实现基类中的抽象方法Area()Console.WriteLine(该方法计算圆的面积);returnPI*x*x;publicclassSqure:DimensionspublicoverridedoubleArea()/派生类Squre中必须使用override修饰符实现基类中的抽象方法Area()Console.Writ
6、eLine(“该方法计算正方形的面积);return(x*x);特征n抽象方法:只包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现。n静态方法不能标记为override、virtual或abstract,即静态方法都必须是具体的n抽象类:含有一个或多个抽象方法的类称为抽象类,在声明时,类名前须添加“abstract”关键字,但抽象类中可以包含非抽象方法n抽象类不能够被实例化,这是因为它包含了没有具体实现的方法,即可实例化的类一定不是抽象类,不包含未具体实现的抽象方法。n抽象方法不能是私有的,它必须为公共的。n子类继承抽象父类后,可以使用override关键字覆盖父类中的抽
7、象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract抽象类的好处n当更新组件版本时,可根据需要将附加方法添加到基类,但抽象方法和属性必须保持不变。n它可以很好的组织类的结构,举个例子。我们将人建模为一个抽象类,将人类共有的特性在抽象类中实现。而不同群体的人的不同特质则可以用派生类来体现。abstract和virtual定义函数的区别1.虚方法必须有实现部分,并为派生类提供了覆盖该方法的选项虚方法必须有实现部分,并为派生类提供了覆盖该方法的选项抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的抽象方法没有提供实现部分,抽象方法是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 课件 抽象 方法
限制150内