欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c#课件抽象方法和抽象类.ppt

    • 资源ID:67207552       资源大小:41KB        全文页数:15页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c#课件抽象方法和抽象类.ppt

    抽象方法和抽象类多态性n在程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性。表现在两方面:q方法的重载。q对象的上转型对象。子类可以改写父类的方法,而上转型对象(父类的对象)可以调用改写后的方法。不同的子类可能改写的内容不同。比如:动物类中的cry()方法,在子类“猫”中可以改写为“喵喵”,而在子类“狗”中可以改定为“汪汪”。猫类的和狗类的上转型对象在调用cry()方法时是各不相同的。n一个类可能会有很多的子类,这些子类中都有共同的行为,但行为的实现方法有所差异,为了迫使在编写子类时均实现这些方法,且保持统一的名称,可以事先在这些子类共同的父类中将方法的类型、名称、形参等确定下来,而方法体在子类中确定,对这种父类并不具体实现这些方法,而只定义了方法类型、名称、形参等的方法称为抽象方法,在定义时需在方法名称前加abstract,具有一个以上抽象方法的类称为抽象类,类名称前也要加修饰词abstract,抽象方法和抽象类n抽象类是指不能被实例化的类,是派生类的基础,通过部分实面或不实现.抽象类可作为其它类的模板.n声明抽象类的语法如下:nabstractclass类名nn.nn1.抽象方法是隐式的虚方法.n2.只允许在抽象类中声明抽象方法n3.抽象方法声明不提供实际的实现,没有方法体,方法声明以一个分号结束,并在声明后没有大括号.n例如:npublicabstractvoidArea();举例n举一个简单的例子,举一个简单的例子,“图形图形”这个类是抽象的,它的成员方法这个类是抽象的,它的成员方法“计算图形面积计算图形面积”也就没有实际的意义。面积只对也就没有实际的意义。面积只对“图形图形”的派生的派生类比如类比如“圆圆”、“正方形正方形”这些非抽象的概念才有效,那么我们这些非抽象的概念才有效,那么我们就可以把基类就可以把基类“图形图形”的成员方法的成员方法“计算面积计算面积”声明为抽象的,声明为抽象的,具体的实现交给派生类通过重载来实现。具体的实现交给派生类通过重载来实现。分析:分析:n抽象类:图形,抽象方法抽象类:图形,抽象方法求面积求面积n(指出:图形必须有求面积的方法,但因为不同图形求面积的方法指出:图形必须有求面积的方法,但因为不同图形求面积的方法不一样,因此将此方法声明为抽象方法不一样,因此将此方法声明为抽象方法)n子类:正方形类,实现了抽象类中求面积的抽象方法。子类:正方形类,实现了抽象类中求面积的抽象方法。n子类:圆,实现了抽象类中求面积的抽象方法。子类:圆,实现了抽象类中求面积的抽象方法。abstractpublicclassDimensions/声明类Dimensions为抽象类protecteddoublex;publicconstdoublePI=Math.PI;publicDimensions(doublex)this.x=x;publicabstractdoubleArea();/在抽象类Dimensions中声明抽象方法Area()publicclassCircle:DimensionspublicoverridedoubleArea()/派生类Circle中必须使用override修饰符实现基类中的抽象方法Area()Console.WriteLine(该方法计算圆的面积);returnPI*x*x;publicclassSqure:DimensionspublicoverridedoubleArea()/派生类Squre中必须使用override修饰符实现基类中的抽象方法Area()Console.WriteLine(“该方法计算正方形的面积);return(x*x);特征n抽象方法:只包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现。n静态方法不能标记为override、virtual或abstract,即静态方法都必须是具体的n抽象类:含有一个或多个抽象方法的类称为抽象类,在声明时,类名前须添加“abstract”关键字,但抽象类中可以包含非抽象方法n抽象类不能够被实例化,这是因为它包含了没有具体实现的方法,即可实例化的类一定不是抽象类,不包含未具体实现的抽象方法。n抽象方法不能是私有的,它必须为公共的。n子类继承抽象父类后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract抽象类的好处n当更新组件版本时,可根据需要将附加方法添加到基类,但抽象方法和属性必须保持不变。n它可以很好的组织类的结构,举个例子。我们将人建模为一个抽象类,将人类共有的特性在抽象类中实现。而不同群体的人的不同特质则可以用派生类来体现。abstract和virtual定义函数的区别1.虚方法必须有实现部分,并为派生类提供了覆盖该方法的选项虚方法必须有实现部分,并为派生类提供了覆盖该方法的选项抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化方法,否则派生类将不能被实例化n/抽象方法publicabstractclassAnimalpublicabstractvoidSleep();publicabstractvoidEat();n/虚方法publicclassAnimalpublicvirtualvoidSleep()publicvirtualvoidEat()2.抽象方法只能在抽象类中声明,抽象方法只能在抽象类中声明,抽象方法必须在派生类中重写抽象方法必须在派生类中重写虚方法不是虚方法不是也不必要重写。其实如果类包含抽象方法,那么该也不必要重写。其实如果类包含抽象方法,那么该类也是抽象的,也必须声明为抽象的。类也是抽象的,也必须声明为抽象的。npublicclassAnimalpublicabstractvoidSleep();publicabstractvoidEat();n编译器会报错:编译器会报错:Main.cs(10):VSTest.Animal.Sleep()isabstractbutitiscontainedinnonabstractclassVSTest.AnimalMain.cs(11):VSTest.Animal.Eat()isabstractbutitiscontainedinnonabstractclassVSTest.Animal3.抽象方法必须在派生类中重写,这一点跟接口类似,虚方法不必。抽象方法不能抽象方法必须在派生类中重写,这一点跟接口类似,虚方法不必。抽象方法不能声明方法实体声明方法实体而虚方法可以而虚方法可以包含抽象方法的类不能实例化包含抽象方法的类不能实例化,而包含虚方法的类可以实例化!,而包含虚方法的类可以实例化!npublicabstractclassAnimalpublicabstractvoidSleep();publicabstractvoidEat();npublicclassCat:AnimalpublicoverridevoidSleep()Console.WriteLine(Catissleeping);/weneedimplementAnimal.Eat()heren编译器会报错:编译器会报错:Main.cs(14):VSTest.CatdoesnotimplementinheritedabstractmemberVSTest.Animal.Eat(),因为我们没有实现抽象类中所有抽象,因为我们没有实现抽象类中所有抽象方法。方法。nVirtual:当一个方法被声明为Virtual时,它是一个虚拟方法,直到你使用ClassNamevariable=newClassName();声明一个类的实例之前,它都不存在于真实的内存空间中。这个关键字在类的继承中非常常用,用来提供类方法的多态性支持。noverrride:表示重写这个类是继承于Shape类publicoverridedoubleArea这个属性再shape中肯定存在但是这里我们不想用shape中的所以要重写virtual,abstract是告诉其它想继承于他的类你可以重写我的这个方法或属性,否则不允许。n一个生动的例子:老爸表示基类(被继承的类)儿子表示子类(继承的类)n老爸用virtual告诉儿子:孩子,你要继承我的事业,在这块上面可以自己继续发展你自己的n儿子用override告诉全世界:这个我可不是直接拿我爸的,他只是指个路给我,是我自己奋斗出来的abstract:抽象方法声明使用,是必须被派生类覆写的方法,抽象类就是用来被继承的;可以看成是没有实现体的虚方法;如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法;抽象类不能有实体的。小结n用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。nabstract类必须被继承,abstract方法必须被重写。n抽象类不能被实例化(直接创建对象)。n抽象方法只需声明,而不需实现(无方法体)。作业按以下要求编写程序按以下要求编写程序创建一个抽象的车类,包括各种车辆创建一个抽象的车类,包括各种车辆。至少包含一个抽象方。至少包含一个抽象方法。成员变量:法。成员变量:品牌、可载人数、轮子个数、能源等。抽象品牌、可载人数、轮子个数、能源等。抽象方法如:跑、加速、刹车等。方法如:跑、加速、刹车等。通过继承车类重新声明公共汽车类和普通自行车类。通过继承车类重新声明公共汽车类和普通自行车类。在子类在子类中实现父类中抽象方法中实现父类中抽象方法构造方法对应区分为公共汽车和普通自行车构造方法对应区分为公共汽车和普通自行车。子类的构造方。子类的构造方法中根据不同的类设置不同的默认值,如汽车类可以默认轮法中根据不同的类设置不同的默认值,如汽车类可以默认轮子个数是子个数是4个,可载人数个,可载人数50个,能源为汽油。个,能源为汽油。n创建一个控制台应用程序,其中声明一个抽象类myClass,该抽象类中声明了两个属性和一个方法,其中,为两个属性提供了具体实现,方法为抽象方法。然后声明一个派生类DriveClass,继承自myClass,在DriveClass派生类中重写myClass抽象类中的抽象方法,并提供具体的实现。最后在主程序类Program的Main方法中实例化DriveClass派生类的一个对象,使用该对象实例化抽象类,并使用抽象类对象访问抽象类中的属性和派生类中重写的方法。程序代码如下。(实例位置:光盘TMsl104)

    注意事项

    本文(c#课件抽象方法和抽象类.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开