欢迎来到天天文库
浏览记录
ID:36709117
大小:871.50 KB
页数:48页
时间:2019-05-10
《C#第5章C#面向对象编程基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#面向对象程序设计主讲教师:胡鹏飞个人邮箱:hpf126@126.com教学邮箱:xxu2009@126.com5.1继承5.2抽象类与密封类5.3多态性第5章C#面向对象编程基础我学习我快乐!我快乐我学习!5.1继承5.1.1继承的定义5.1.2覆盖5.1.3.NETFramework中重要的类5.1.4泛型我学习我快乐!我快乐我学习!5.1继承继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。 现实世
2、界中的许多实体之间不是相互孤立的,它们往往具有共同的特征也存在内在的差别。人们可以采用层次结构来描述这些实体之间的相似之处和不同之处。我学习我快乐!我快乐我学习!我学习我快乐!我快乐我学习!5.1继承对类进一步细化,从而派生为更具体详细的类,派生类除自动具有基类中的所有成员以外,还可以添加自己所特有的属性和行为,并可根据需要修改基类中个别行为的具体实现。继承体现了一般/特殊关系(派生类是基类的细化),保证了层次结构的清晰性,且体现了模型/代码重用的原则,体现了分类学基本方法。继承具有级联效应。修改基类成员会影响其派生类。我学习我快乐!我快乐我学习!5.1.1继承的定义从一个基类派生一个子类
3、的语法是:[类修饰符]class类名:基类类名{类的成员;}需要使用冒号(:),后跟基类的名字。冒号的意思相当于“派生于”。参看li5-1P33我学习我快乐!我快乐我学习!5.1.1继承的定义一个类能够从基类继承成员。关于继承,需要注意以下几个重要的方面:继承是可传递的。如果B派生于A,并且C派生于B,那么C就继承了B中声明的成员,同时也继承了A中声明的成员。派生类能够扩展它的基类。派生类可以添加同它继承的成员一样的新成员,但是这不能去掉一个继承的成员的定义。我学习我快乐!我快乐我学习!5.1.1继承的定义不管它们是否声明了可访问性,构造函数和析构函数总是不能被继承。派生类可以通过用相同的
4、名称和签名,声明一个新的成员方法来覆盖继承的成员。类可以声明虚拟方法、属性和索引,并且派生类可以覆盖这些功能成员的执行。这使得类可以展示多态性,此行为被功能成员调用实现,而这个调用则要根据实例运行时的类型,调用不同的方法成员。我学习我快乐!我快乐我学习!保护成员保护成员通过在成员声明中使用protected修饰符来定义。为了方便派生类的访问,但又不希望其他无关类随意访问,这时就可以使用protected修饰符,将成员声明为保护的。保护成员为什么引入保护成员这个概念?P29我学习我快乐!我快乐我学习!5.1.2覆盖覆盖(override)当在子类中声明了与基类相同名字的方法,而且,使用了相同
5、的签名时,就称派生类的成员覆盖了基类中的成员。C#中,基类中的功能成员默认为不可覆盖的,除非使用了virtual修饰。派生类中若要覆盖相同签名的基类功能成员,必须使用override修饰且重新定义其实现。即使派生类覆盖了基类功能成员,仍能使用“base.成员名”来访问被覆盖的功能成员。P33我学习我快乐!我快乐我学习!示例5-2类图我学习我快乐!我快乐我学习!5.1.2覆盖覆盖(override)和重载(overload)。重载它是指允许存在多个同名函数,而这些函数的签名不同(或许参数个数不同,或许参数类型不同,或许两者都不同),从而能够处理方法的参数不同但操作相同的情况。覆盖是指子类重新
6、定义基类的虚函数,二者具有相同的签名,它是面向对象中多态的基础。派生类中可以同时对基类中的功能成员进行重载和覆盖。不能覆盖类的静态成员。我学习我快乐!我快乐我学习!new关键字我们可以在派生类中定义新的成员方法,但如果无意中恰好定义了一个和基类完全一样的方法,怎么办?new关键字用来在派生类中隐藏从基类中继承的单个成员。参看例子5-2。P34我学习我快乐!我快乐我学习!override和new的区别?override表示重写,用于继承类对基类中虚成员的实现。new表示隐藏,声明类的成员,表示隐藏了基类中同名的成员。我学习我快乐!我快乐我学习!1Object类所有.NET类都派生于Syste
7、m.Object类。在C#中在定义类时若没有指定基类,编译器自动假设这个类派生于System.Object类。System.Object类就成为C#中所以类的根。5.1.3.NETFramework中重要的类P26我学习我快乐!我快乐我学习!Object类常用方法1)publicvirtualstringToString()返回对象的字符串表示方式2)publicvirtualboolEquals(objectobj)对
此文档下载收益归作者所有