第七讲 抽象类与抽象方法.ppt_第1页
第七讲 抽象类与抽象方法.ppt_第2页
第七讲 抽象类与抽象方法.ppt_第3页
第七讲 抽象类与抽象方法.ppt_第4页
第七讲 抽象类与抽象方法.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七讲 抽象类与抽象方法,-多态性、抽象方法和抽象类 信息管理系 武俊琢,* 温故 *,类成员的访问权限 public、protected、友好、private 子类继承,子类继承父类的成员 在同一包:子类可继承父类非私有成员 不同包:子类可继承父类的protcted和public成员。 变量的隐藏和方法的覆盖 使用super关键字 使用super调用被隐藏的变量和被覆盖的方法 使用super调用父类的构造方法 对象的上转型对象 父类变量引用子类对象。,本讲要点,类的多态 抽象方法与抽象类,多态性,在程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性。表现在两方面: 方法的重载。 对

2、象的上转型对象。子类可以改写父类的方法,而上转型对象(父类的对象)可以调用改写后的方法。不同的子类可能改写的内容不同。比如:动物类中的cry()方法,在子类“猫”中可以改写为“喵喵”,而在子类“狗”中可以改定为“汪汪”。猫类的和狗类的上转型对象在调用cry()方法时是各不相同的。 (P70例4.22),抽象方法与抽象类,用关键字abstract修饰的类就是抽象类。 没有方法体的方法,且首部用关键字abstract修饰,就是抽象方法。声明抽象方法的格式: 修饰符abstract 返回值类型 方法名(形参列表);,public abstract class AAnimal public Strin

3、g name; public int age; public void print() System.out.println(名字:+name); System.out.println(大小:+age); public abstract void run(); public abstract void cry(); ,抽象方法与抽象类使用说明(一),含有抽象方法的类必须定义为抽象类。,public class AAnimal/错误 public String name; public int age; public void print() System.out.println(名字:+nam

4、e); System.out.println(大小:+age); public abstract void run(); public abstract void cry(); ,抽象方法与抽象类使用说明(二),不能由抽象类直接创建对象。它只能做为父类使用,由它派生的子类必须实现抽象类中所有的抽象方法,才能创建对象。 抽象方法的实现:子类重写父类的抽象方法,增加方法体,使之成为一个非抽象方法。可以空实现。,class Test public static void main(Stringargs) AAnimal a; a=new AAnimal();/错误 ,class Dog extend

5、s AAnimal String type; public Dog() type=宠物狗; public void run() public void cry() System.out.println (汪汪叫); class Test public static void main(Stringargs) Dog a; a=new Dog(); =欢欢;a.age=2; a.print(); a.cry(); System.out.println (这是一只+a.type); ,续,抽象方法与抽象类使用说明(三),如果子类没有实现抽象基类(父类)中所有的抽象方法,则子类也必须定义

6、成一个抽象类。即:抽象的子类也必须使用修饰符:abstract 可以将没有任何抽象方法的类声明为abstract,避免由这个类直接创建任何的对象。,abstract class Dog extends AAnimal String type; public Dog() type=宠物狗; /public void run() public void cry() System.out.println (汪汪叫); ,class Bird extends AnimalClass/定义鸟类继承动物类 public Bird()/构造方法初始化 name=麻雀; age=3; public void

7、run()/实现父类的抽象方法 System.out.println(会飞); public void cry() System.out.println (叽叽喳喳); 创建鸟类对象:练习,鸟类,P71例4.23,抽象类:图形,抽象方法求面积 (指出:图形必须有求面积的方法,但因为不同图形求面积的方法不一样,因此将此方法声明为抽象方法) 子类:梯形类,实现了抽象类中求面积的抽象方法。 子类:圆,实现了抽象类中求面积的抽象方法。 类:堆,求体积。 应用程序类:创建梯形、圆、堆对象,分别进行计算。,小结,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,

8、该方法叫做抽象方法。 abstract类必须被继承,abstract方法必须被重写。 抽象类不能被实例化(直接创建对象)。 抽象方法只需声明,而不需实现(无方法体)。,作业,作业一:P82习题1、2、3、4 作业二:按以下要求编写程序 创建一个抽象的车类,包括各种车辆。至少包含一个抽象方法。成员变量: 品牌、可载人数、轮子个数、能源等。抽象方法如:跑、加速、刹车等。 通过继承车类重新声明公共汽车类和普通自行车类。在子类中实现父类中抽象方法 构造方法对应区分为公共汽车和普通自行车。子类的构造方法中根据不同的类设置不同的默认值,如汽车类可以默认轮子个数是4个,可载人数50个,能源为汽油。,技能训练七,训练目的 掌握抽象类与抽象方法的应该技巧 实验要求: 创建一个抽象的车类,包括各种车辆。至少包含一个抽象方法。成员变量: 品牌、可载人数、轮子个数、能源等。抽象方法如:跑、加速、刹车等。 通过继承车类重新声明公共汽车类和普通自行车类。在子类中实现父类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论