- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c#继承,c语言,cf,c站,c语言入门,c罗,c语言编程软件,c
继承 类支持单继承,object类型是所有类的基类。 前面所介绍的例子中的类都是隐含地从object派生而来的。 从object派生出来的类A 继承 继承 继承 Vehicle作为基类,体现了”汽车”这个实体具有的公共性质;汽车都有轮子和重量.Car类继承了Vehicle的这些性质,并且添加了自身的特性:可以搭载乘客. 继承 继承的规则: 继承可是传递 派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义 构造函数和析构函数不能被继承。除此以外的其他成员,无论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。 派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不是因为派生类删除了这些成员,只是不能在访问这些成员。 类可以定义虚方法、虚属性和虚索引符,它的派生类能够重载这些成员,从而实现类展示出多态性。 继承 覆盖 在类的成员声明中,可以声明与基类的成员同名的成员。这时我们称派生类的成员覆盖了基类的成员。这种情况下,编译器不会出错,但会给出一个警告。对派生类的成员使用new关键字,可以消除这个警告。 注意:如果在成员声明中加上new关键字修饰,而该成员事实上并没有覆盖继承的成员,编译器将会给出警告。在一个成员声明同时使用new和override则编译器会报告错误。 继承 继承示例:Mortimer Phones 示例如何在一个虚拟的汽车电话公司Mortimer Phones运用继承。我们开发一个类,表示顾客的帐户,并负责计算顾客的电话费。 类Customer,为Mortimer Phones公司的每个顾客计算每月的电话费。它的每个实例表示一个顾客的帐户。类包含两个属性: Name表示顾客的姓名(可读写) Balance表示帐户的拥有情况(只读) 两个方法: RecordPayment(),调用它表示顾客要支付一定量的帐单 RecordCall(),在顾客打电话时调用,它计算电话费,并把它加到顾客的结余中。 继承 我们假定只有两种类型的电话:固定电话和移动电话。固定电话2分/分钟;移动电话30分/分钟。 例1-- MortimerPhones.cs 添加继承 在上例中,所有的顾客都只有一种付费方式。与现实情况相差太远。我们假定有如下的收费模式:1、每个月付一定的费用,这样就可以得到免费的60分钟固定电话或移动电话,然后为其他电话付较少的费用。2、每个月付得越多,获得的免费电话时间就越长。3、公司模式,周末的费用较高,而工作日的费用较低。还需要考虑可扩展性。 方案1:使用switch语句。 方案2:使用继承,把不同类型的付费顾客区分开,定义新类。 MortimerPhones2.cs MortimerPhones3.cs 多态性 多态性 在面向对象的系统中,多态性是一个非常重要的概念,它允许客户对一个对象进行操作,由对象来完成一系列的动作,具体实现哪个动作、如何实现由系统负责解释。 定义:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。有两种类型的多态性: 编译时的多态性—通过重载来实现。方法重载和运算符重载,它们都实现了编译时的多态性。 对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。 运行时的多态性—指直到系统运行时,才根据实际情况决定实现何种操作。NET中,运行时的多态性通过虚成员实现。 多态性 编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。 虚方法—在方法声明前加上virtual。对于非虚的方法,无论被其所在的类的实例调用,还是被这个类的派生类的实例调用,方法的执行方式不变。而对于虚方法,它的执行方式可以被派生类改变。 多态性 多态性 注意输出:方法a.G()实际调用了B.G,而不是A.G。这是因为编译时值为A,但在运行是值为B,所以B完成了对方法的实际调用。 示例:Deploy.cs 多态性 介绍了从类A中派生出来的类B。类B继承了类A的方法F,并且创建了自己的方法G。 方法,属性都可以是虚的,这意味着他们可以在派生的类中被重写。 多态性 介绍了有虚方法F的类A,而类B替换了F。B中的替换方法包含了一个对A中被替换的方法的调用base.F(),它调用了A中的重写方法。[如果F不是虚方法,那么将调用基类A的F方法,而不是子类B的F方法。] 抽象 可以通过包括abstract修饰符来说明一个类是不完整的,只是用作其它类的基类。这样的类被称为抽象类。抽象类可以指定抽象函数-非抽象派生类必须实现的成员。 抽象 class B: A { public void G() {
文档评论(0)