《抽象类和抽象方法.ppt》由会员分享,可在线阅读,更多相关《抽象类和抽象方法.ppt(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第第8讲讲 OO的的Java实现(实现(6)回顾3-1 finalfinal不能修改变量不能修改变量子类不能重写方法子类不能重写方法2回顾3-2 supersuper调用父类的构造方调用父类的构造方法法在子类中调用父类的方在子类中调用父类的方法法supersuper用于调用父类的构造用于调用父类的构造方法,其语法如下:方法,其语法如下:super();super();或或super(super(参数参数););supersuper用于调用父类的方法,其语法如下:用于调用父类的方法,其语法如下:super.super.方法名方法名();();或或super.super.方法名方法名(参数参数);
2、);3回顾3-3q封装、继承和多态是面向对象的主要特征q继承可提高代码的重用性,使用extends关键字来实现。除了构造方法之外,父类的所有方法和属性都被子类的对象继承qsuper关键字的使用qfinal关键字的使用q多态性是不同的实例对象以不同的方式对相同的信息作出不同的表现4提出任务q在类的继承中子类可以继承父类的所有非私有成员,对父类中的方法可以直接进行调用。但是有时我们需要解决这样一类问题,在父类中只需要规定各子类拥有哪些属性,而无法则不需要给出属性的具体信息,这些属性对每个子类可能都是不同的,需要在各子类中进行具体的定制。那么如何更有效的实现以上需求呢?5目标q理解抽象类和抽象方法的
3、概念q会创建抽象类和抽象方法q掌握抽象方法的实现6抽象类q所谓抽象类是不能使用new方法进行实例化的类,即没有具体实例对象的类。Java中用修饰符abstract来说明抽象类。抽象类的声明一般如下所示:修饰符 abstract class 类名 /类体7abstract 修饰符 3-1q由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类q抽象方法必须声明在抽象类中q抽象方法语法:abstract type method_name(parameter_list);q声明抽象类语法:abstract class q使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子
4、类提供这种抽象方法的实现细节8abstract 修饰符 3-2q抽象类可以具有指向子类对象的对象引用 abstractabstract抽象类不能被实例化构造方法 和 static 方法不能是抽象的父类的抽象方法往往在子类中实现 9abstract 修饰符 3-3 演示:示例 7q抽象方法不具有任何实现代码abstract class Shape.protected double length;protected double width;.abstract double area();class Square extends Shape /*构造方法.*param num 传递至构造方法的参数
5、 *param num1 传递至构造方法的参数 */Square(final double num,final double num1)super(num,num1);/*计算正方形的面积.*return double */double area()(“正方形的面积为:);return length*width;10抽象类及抽象方法示例2-1abstract class Employee int basic=2000;abstract void salary();class Manager extends Employeevoid salary()System.out.println(薪资等于
6、+basic*5);11抽象类及抽象方法示例2-2class Worker extends Employeevoid salary()System.out.println(薪资等于薪资等于+basic*2);class AbstractDemo public static void main(String args)Manager m=new Manager();System.out.println(经理经理);m.salary();Worker w=new Worker();System.out.println(工人工人);w.salary();12总结q抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承它的特征。q抽象类中可以包括被它的所有类共享的公共行为和公共属性。q在程序中不能用抽象类作为模板来创建对象。q声明一个方法为抽象方法时,无需实现该方法,但要确保它的所有子类实现该方法。q子类必须实现父类中所有的抽象方法。13作业q如下图所示的类层次关系说明图设计抽象父类Shape、子类圆类Circle和子类圆柱体类Cylinder。定义类的无参构造方法和有参构造方法,覆盖父类方法满足子类要求,并按子类要求增加变量和相关方法。在各个类中增加main方法测试类,要求输出面积和体积。14