网站大量收购闲置独家精品文档,联系QQ:2885784924

C#第5章C#面向对象编程基础.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#面向对象程序设计 第5章 C#面向对象编程基础 5.1 继承 5.2 抽象类与密封类 5.3 多态性 5.1 继承 5.1.1 继承的定义 5.1.2 覆盖 5.1.3 .NET Framework中重要的类 5.1.4 泛型 5.1 继承   继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。   现实世界中的许多实体之间不是相互孤立的,它们往往具有共同的特征也存在内在的差别。人们可以采用层次结构来描述这些实体之间的相似之处和不同之处。 5.1 继承 对类进一步细化,从而派生为更具体详细的类,派生类除自动具有基类中的所有成员以外,还可以添加自己所特有的属性和行为,并可根据需要修改基类中个别行为的具体实现。 继承体现了一般/特殊关系(派生类是基类的细化),保证了层次结构的清晰性,且体现了模型/代码重用的原则,体现了分类学基本方法。 继承具有级联效应。修改基类成员会影响其派生类。 5.1.1 继承的定义 从一个基类派生一个子类的语法是: [类修饰符] class 类名:基类类名 { 类的成员; } 需要使用冒号(:),后跟基类的名字。冒号的意思相当于“派生于”。 参看li5-1 5.1.1 继承的定义 一个类能够从基类继承成员。关于继承,需要注意以下几个重要的方面: 继承是可传递的。如果B派生于A,并且C派生于B,那么C就继承了B中声明的成员,同时也继承了A中声明的成员。 派生类能够扩展它的基类。派生类可以添加同它继承的成员一样的新成员,但是这不能去掉一个继承的成员的定义。 5.1.1 继承的定义 不管它们是否声明了可访问性,构造函数和析构函数总是不能被继承。 派生类可以通过用相同的名称和签名,声明一个新的成员方法来覆盖继承的成员。 类可以声明虚拟方法、属性和索引,并且派生类可以覆盖这些功能成员的执行。这使得类可以展示多态性,此行为被功能成员调用实现,而这个调用则要根据实例运行时的类型,调用不同的方法成员。 保护成员 保护成员通过在成员声明中使用protected修饰符来定义。为了方便派生类的访问,但又不希望其他无关类随意访问,这时就可以使用protected修饰符,将成员声明为保护的。 5.1.2 覆盖 覆盖(override) 当在子类中声明了与基类相同名字的方法,而且,使用了相同的签名时,就称派生类的成员覆盖了基类中的成员。 C#中,基类中的功能成员默认为不可覆盖的,除非使用了virtual修饰。派生类中若要覆盖相同签名的基类功能成员,必须使用override修饰且重新定义其实现。 即使派生类覆盖了基类功能成员,仍能使用“base.成员名”来访问被覆盖的功能成员。 5.1.2 覆盖 覆盖(override)和重载(overload)。 重载它是指允许存在多个同名函数,而这些函数的签名不同(或许参数个数不同,或许参数类型不同,或许两者都不同),从而能够处理方法的参数不同但操作相同的情况。 覆盖是指子类重新定义基类的虚函数,二者具有相同的签名,它是面向对象中多态的基础。 派生类中可以同时对基类中的功能成员进行重载和覆盖。 不能覆盖类的静态成员。 new关键字 我们可以在派生类中定义新的成员方法,但如果无意中恰好定义了一个和基类完全一样的方法,怎么办? new关键字用来在派生类中隐藏从基类中继承的单个成员。 参看例子5-2。 override和new的区别? override 表示重写,用于继承类对基类中虚成员的实现。 new 表示隐藏,声明类的成员,表示隐藏了基类中同名的成员 。 1 Object类 所有.NET类都派生于System.Object类。在C#中在定义类时若没有指定基类,编译器自动假设这个类派生于System.Object类。 System.Object类就成为C#中所以类的根。 Object类常用方法 1)public virtual string ToString() 返回对象的字符串表示方式 ????2)public virtual bool Equals(object obj) 对对象的实例进行比较 ????3)public static bool Equa

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档