(23)--6.3抽象类和final类面向对象程序设计.ppt
-
资源ID:96638126
资源大小:420.50KB
全文页数:11页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(23)--6.3抽象类和final类面向对象程序设计.ppt
让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效第六章 继承继承的含义以及类的层次关系 final关键字抽象类和具体类让IT教学更简单,让IT学习更有效 目录6.16.1类的继承6.26.2覆盖和隐藏机制覆盖和隐藏机制6.36.3抽象类和抽象类和final类类让IT教学更简单,让IT学习更有效6.3 抽象类和抽象类和final类类从Java语法上讲,抽象类是一种不能被直接实例化的类,如下面的类就是一个抽象类:public abstract class GeometricFigureString color;String getColor()Return this.color;public abstract double getArea();或者public abstract class geometricString color;String getColor()Return this.color;让IT教学更简单,让IT学习更有效一般地,含有抽象方法的类被称为抽象类。它不能被直接实例化,一个抽象类必须用abstract关键字来修饰。相应的,抽象类中没有方法体的方法被称为抽象方法。即抽象方法只需声明,无需实现。当然,一个抽象方法也必须用abstract来声明。正是因为抽象类无法直接创建实例,所以在实际中,抽象类只是对某些具有相似性但又有一定区别的类型做成一个更高的抽象,抽象机制使得我们可以用从更高的角度来研究对象间的普遍性。让IT教学更简单,让IT学习更有效抽象类的使用规则抽象类必须用abstract来修饰类的声明。抽象类不能直接用new运算符创建实例。抽象类可以作为变量的类型声明,如Student student;,具体该变量创建时,可以用new运算符创建任何一个该类的非抽象子类。如下面的语句中student类型是Student,但包含的具体实现是由Postgraduate完成的。Student student=new Postgraduate();抽象类中可以没有抽象方法,但如果定义了抽象方法,则该方法不能有方法体。抽象方法不能用private来修饰,因为用private修饰的方法子类无法访问,也无从实现。一个抽象方法,其abstract修饰符和访问控制修饰符的组合顺序没有前后之分。一个继承抽象类的非抽象子类,不允许出现抽象方法。从抽象超类中继承的抽象方法在非抽象子类中必须有具体实现,但若子类本身也是抽象的,则不必实现。让IT教学更简单,让IT学习更有效课堂练习课堂练习定义一个抽象类学生,包含有属性:name、gender、birthdate,另外提供一个抽象方法验证选课单(因为没有明确是什么样的学生,所以其验证方法不确定)boolean validate(String curriculumCode)定义一个子类本科生,继承于学生类,其选课单验证方法是只能选则1、2、3开头的课程定义一个子类研究生,继承于学生类,其选课单验证方法是只能选则4、5开头的课程写一个程序,分别创建一个本科生对象和研究生对象,访问验证方法。让IT教学更简单,让IT学习更有效课堂练习课堂练习请思考你平常见过的各类电视,如果让你来构造一个抽象类来描述电视机,你会如何定义。让IT教学更简单,让IT学习更有效具体来说,设计抽象类时应遵循以下基本原则:超类一般都应表示为抽象类。子类是超类的一种特殊子类。抽象类应该拥有尽可能多的功能,尽可能少的数据(数据越多离抽象越远)让IT教学更简单,让IT学习更有效 final类类 1 final类开发者可以用final声明一个类不可再被作为超类,如:public final class FinalClass 如果这时定义一个子类SubClass继承FinalClass的话,将会报出下面的错误:The type SubClass cannot subclass the final class FinalClass该错误的含义翻译过来就是SubClass不能派生于最终类FinalClass。让IT教学更简单,让IT学习更有效2.final方法同样,也可以用final来修饰一个方法,表示该方法不可被子类重写,如:public final void finalMethod()把方法声明为final,一则限制了子类中对其改写,二则提高了执行的效率,因为这种情况属于静态绑定。让IT教学更简单,让IT学习更有效3.final属性对于成员变量和变量,也可以用final来修饰,表示是一个不可被修改的常量,如:final int MAX_SPEED=200;最后,需要注意的是一个方法如果需要被构造函最后,需要注意的是一个方法如果需要被构造函数所调用,那么方法最好声明为数所调用,那么方法最好声明为final,否则,否则,如果子类重写了这个方法就可能引起意外的风险,如果子类重写了这个方法就可能引起意外的风险,即避免多态性的发生。即避免多态性的发生。