您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 第3章面向对象程序设计(5)
面向对象的编程划分黄淮学院计算机科学系王春华1(对应章节4.3多态与动态绑定4.6接口)黄淮学院计算机科学系王春华2分离“做什么”与“怎么做”,将设想和实现分离开,多态融合了抽象和具体,让程序更有逻辑,并有更好的可读性。31.对象的类型转换•基本类型可以自动转换,强制转换。对象类型也允许转换,但这种转换只限于JAVA类层次结构图上的一根枝干上,即父类和子类之间。•向上转型upcast*•向下转型downcast41.对象的类型转换–向上转型•父类对象引用可指向子类对象。•子类对象引用不可指向父类对象。•向上转型后,成员访问时可识别出重写的方法,但将丢失对象所属子类特有的方法和数据。51.对象的类型转换-向下转型•向下转型只能针对指向子类对象的基类对象引用进行•向下转型语法:(子类名)基类对象引用•向下转型后将重新拥有子类特有的方法和数据。61.对象的类型转换-总结•对象既可以作为它自己本身的类型使用,也可以作为它的基类类型使用。•向上转型是从一个较专用的类型向较通用的类型转换,所以总是很安全的。71.对象的类型转换-总结(2)•1.父类引用指向子类对象,子类引用不能指向父类对象。•2.把子类对象直接赋给父类引用叫向上转型,向上转型不用强制转型。•3.把指向子类对象的父类引用赋给子类引用叫向下转型,要强制转型。•4.向上转型会丢失子类特有的方法,但是子类中重写父类的方法,仍然有效。•5.向上转型的作用,减少重复代码。(示例:备注)892.抽象类和抽象方法•抽象方法•抽象类•多态性102.1抽象方法•定义:只给出方法的原型,而无实现的方法体。112.2抽象类•抽象类是对一系列类的抽象,为一系列类制定一个框架。抽象类提供了操纵一系列的类的通用的界面,而不需要具体实现。•抽象类中可包含抽象方法。•抽象类的意义在于继承,子类可对抽象类进行扩充,重写抽象方法,使抽象类具体化。抽象类不能生成对象。122.2抽象类-举例•如有Circle、Square、Triangle三个类,它们皆含有求周长和面积的方法getL()和getS(),为了进行通用模式的操作,我们可以提取同有成员,抽象成一个Shape类。框架设计如下图:132.2抽象类-举例(续)•编程设计图中描述的类,并分别求不同图形的面积。142抽象类与抽象方法-思考152.3多态性•多态性:不同类的对象,对同一个方法调用,有不同的响应方式。–编译时多态:重载–运行时多态:通过覆盖(重写)父类方法来实现,在运行时根据传递的对象引用,来调用相应的方法。具体而言,将子类对象引用传给父类的对象引用,如果子类有相应方法,则调用子类的;若子类无相应方法,则调用父类的。•补充instanceof:判断一个对象是否为某类的实例。子类对象是父类的实例;当子类对象引用赋给父类对象引用后,父类对象引用是子类的实例。16实验课练习•练习:按如下要求编程,并分析程序结果。•(1)设计一个抽象类Animal,其中包括一个抽象方法sleep()和调用该方法的goSleep方法;•(2)设计Animal的子类Bird,重写sleep方法,输出“abirdsleepsintree”;•(3)设计Animal的子类Fish,依照(2)中的显示;•(4)设计Animal的子类Person,依照(2)中的显示;•(5)实例化三种不同的Animal对象,并调用goSleep方法。17183.接口的创建与使用•抽象类中可能包含非抽象方法,而有一种比抽象类更抽象的类,其中所有的成员方法都是抽象的,这个完全抽象的类有一个新名字“接口”。•3.1接口是什么?•3.2接口的创建•3.3接口的使用193.1接口是什么20接口是行为框架,其中定义了一组行为架框。所有的方法都是抽象的,没有具体实现的细节。实现接口的类需明确实现接口,在类中必须提供这些行为的细则。对接口中的所有方法重写。实现接口,继承类一个类只能继承自一个父类,但同时可以实现多个接口。从这个角度说,接口间接地拓展了多生继承的能力。3.2接口的创建21如显卡接口:说明:(1)接口中所有的方法都默认是publicabstract。不能使用static、final、private、protected等修饰符。(2)其中除了方法,可以设常量(必需为publicstaticfinal,且必须初始化)。(3)interface前可加权限修饰符,public接口须与程序文件同名。3.3接口的使用•接口是为类服务的。•接受服务的类定义时要表明实现接口:•说明:•(1)类中须重写接口中所有方法(具体实现),所有重写方法必须由public修饰(因为重写不能降低权限控制符),见备注。•(2)类可通过实现接口,间接解决多重继承问题。一个类可以继承另一个类,同时实现一系列接口。223.接口实例•例:某厂家Dmeng生产VideoCard接口规定的显卡,后主板上插入cpu和显卡,编程模拟其工作过程。233.接口思考24作业:P979-10
本文标题:第3章面向对象程序设计(5)
链接地址:https://www.777doc.com/doc-2193852 .html