- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲 面向对象编程: 多态 主要内容 引用类型转换 子类对象可以当成父类对象使用(父类引用变量可以指 向子类的对象) 不能通过父类的引用访问子类对象新增加的成员 父类引用只有经过强制转换后才能赋值给子类引用变量。 当且仅当,父类引用确实指向子类对象的时候,这样的强制 转换才能够顺利运行。 语句“引用变量名 is 类名”作用:判断该引用类型变量 所指向的“对象”是否属于该类 引用类型转换 【例1】请分析下面代码的输出结果,理解引用类型转换的规则。 引用类型转换 【例2】请分析下面代码的输出结果。 引用类型转换 【例3】请阅读下面代码,理解引用类型转换能够给程序带来较好的扩展性。 动态绑定 动态绑定是一种调用对象方法的机制,指的是在运行期间,系统将调用对象实际类型所对应的方法。 动态绑定机制,使得系统能够很好地处理在系统初创时没有预见的数据类型。 动态绑定三个必要条件:1)继承;2)重写;3)父类引用指向子类对象 动态绑定 【例1】分析下面代码的输出结果。 动态绑定 【例2】分析下面代码的输出结果。 抽象类 1、什么是抽象方法? 不含有任何方法体的方法。 抽象方法必须用abstract关键字声明。 public abstract int Func(int a) ; 抽象类 2、 什么是抽象类? 包含抽象方法的类。 抽象类必须用abstract关键字声明。 abstract class Test { public abstract int Func (int a); } 抽象类 3、抽象类中,可以包含抽象方法和非抽象方法。 abstract class Test { public abstract int F1(int a,int b);//抽象方法 public void F2(){}//非抽象方法 } 抽象类 4、抽象类不能被实例化(new)。 5、抽象类必须被继承,抽象方法必须被重写。只有当子类实现了父类的所有抽象方法,该子类才能够被实例化。否则,它还是一个抽象类。 抽象类 【例1】请编写代码模拟操作系统与存储介质之间的关系。具体要求如下:(1)操作系统能够访问不同的存储介质,硬盘、U盘等;(2)操作系统在访问某个存储介质的时候,无需关心这个存储介质是如何实现读写操作。 接口 接口是对一组方法声明的统一命名。接口实现了对方法的统一管理,避免了在每种类型中方法的重复定义。 接口中的成员可以是方法、属性、事件、索引器;但接口中不能包含字段、运算符重载、实例构造函数和析构函数。 接口中所有成员默认是公共抽象的,但不能使用public、static等修饰符。 接口:隐式的接口实现 【例1】一个类可以实现多个接口,从而达到多继承。 接口:隐式的接口实现 【例1】代码中采用隐式的接口实现方式,即在实现代码中没有指定实现哪个接口的方法。 当多个接口中包含相同的“方法名称、返回类型和参数”时,如果一个类同时实现了这些接口,隐式的接口实现将出现命名冲突。 接口:显式的接口实现 显式的接口实现方式,指的是在实现过程中,明确指出实现哪个接口的哪个方法,因此可以解决命名冲突。 若显式实现接口,方法不能使用任何修饰符。 显式实现的成员默认为私有的,因此这些成员不能通过类的对象访问。正确的访问方式是把对象转换为对应的接口,通过接口调用方法。 接口:显式的接口实现 【例2】显式的接口实现解决了命名冲突。程序根据不同的接口输出了不同的打招呼内容。 接口的继承 【例3】银行账户接口及实现类。 接口与抽象类的比较 1、抽象类中可以包含虚方法、非抽象方法和静态成员;接口中不能包含非抽象方法和静态成员。 2、抽象类不能实现多继承;接口则支持多继承。 3、抽象类是对一类对象的抽象,继承于抽象类的类与抽象类为“is-a”关系;类实现接口代表实现类具有接口声明的方法,是一种“can-do”的关系。抽象类主要用于关系密切的对象,而接口适合于为不相关的类提供通用功能。 面向对象编程的应用 【例1】设计一个狗类。 【方案一】根据类的定义,直接设计一个Dog类: class Dog { public void Eat(){//eat some food} public void Walk(){//walk} } 面向对象编程的应用 【方案二】使用继承。 由于Eat和Walk都是动物的共同特性,也有可能被其他类用到,这时可以考虑使用“继承”,重新设计代码如下: public abstract class Animal { public abstract v
文档评论(0)