09第9章-继承和多态课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《09第9章-继承和多态课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 继承 课件
- 资源描述:
-
1、第9章 继承和多态第第 II篇篇 的必备基础的必备基础 第6章 对象和类 第7章 字符串 第8章 继承和多态 第5章 数组 第9章抽象类和接口 第10章 面向对象建模-第11章图形界面程序编程 第12章 事件驱动程序-第15章 异常和断言 第16章 简单输入输出 第9章后可涉及图形界面 学习目标F利用继承性由父类创建子类(9.2).F使用super关键字调用父类的构造方法和方法(9.3).F在子类中覆盖方法(9.4).F熟悉Object类中的几个有用的方法(equals(Object),hashCode(),toString(),finalize(),clone(),and getClass(
2、)(9.5,9.11 Optional).9.2 父类和子类Circle-radius+getRadius+setRadius+findAreaCylinder-length+getLength+setLength+findVolumeSubclassSuperclassUML 图CircleCircle MethodsCircle Data父类继承CylinderCircle MethodsCylinder MethodsCircle DataCylinder Data子类/Cylinder.java:Cylinder类的定义描述类的定义描述public class Cylinder ext
3、ends Circle private double length=1;/*Return length*/public double getLength()return length;/*Set length*/public void setLength(double length)this.length=length;/*计算体积计算体积*/public double findVolume()return findArea()*length;Circle-radius+getRadius+setRadius+findAreaCylinder-length+getLength+setLengt
4、h+findVolumeSubclassSuperclasssupertypesubtypeCylinder 是是由由 Circle派生而来Cylinder cylinder=new Cylinder();System.out.println(The length is +cylinder.getLength();System.out.println(The radius is +cylinder.getRadius();System.out.println(The volume of the cylinder is +cylinder.findVolume();System.out.prin
5、tln(The area of the circle is +cylinder.findArea();The length is 1.0The radius is 1.0The volume of the cylinder is 3.14159The area of the circle is 3.14159 输出结果是:9.3使用关键字 super 调用父类的构造方法 调用父类的方法关键字super指向使用它的类的父类,可以用于2种途径:注意注意:调用父类的构造方法必须使用super,并且这个调用必须放在 构造方法的第一行。在子类中使用父类的构造方法的名字会引起语法错误。注意构造方法用来构造
6、类的实例。与属性和方法不同,父类的构造方法不直接传给子类,它们只能从子类的构造方法中用关键字super调用。9.3.2 构造方法链构造方法可以调用重载的构造方法或父类的构造方法。构造方法可以调用重载的构造方法或父类的构造方法。如果他们没有被显示的调用,编译器将把如果他们没有被显示的调用,编译器将把super()当作构造方法当作构造方法的第一条语句。的第一条语句。public Cylinder()等价于 public Cylinder()super();public A(double d)/some statements 等价于 public A(double d)super();/some s
7、tatements 9.3.2 构造方法链在任何情况下,构造一个类的实例,将会沿着继承链调用所有父类的构造方法,这叫构造方法链构造方法链。举例:p244追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee()this(2
8、)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employee(String s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);1.从 main 方法开始追踪执行过程public class Faculty extends Employee publ
9、ic static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee()this(2)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employee(Stri
10、ng s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);2.调用 Faculty 构造方法追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoke
11、d);class Employee extends Person public Employee()this(2)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employee(String s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);3.调用
12、Employee的无参构造方法追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee()this(2)Invoke Employees overloaded constructor);System.out.println(
13、3)Employees no-arg constructor is invoked);public Employee(String s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);4.调用 Employee(String)构造方法追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();pub
14、lic Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee()this(2)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employee(String s)System.out.println(s);class Person public Pe
15、rson()System.out.println(1)Persons no-arg constructor is invoked);5.调用 Person()构造方法追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee(
16、)this(2)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employee(String s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);6.执行 println追踪执行过程public class Faculty extends Employe
17、e public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invoked);class Employee extends Person public Employee()this(2)Invoke Employees overloaded constructor);System.out.println(3)Employees no-arg constructor is invoked);public Employe
18、e(String s)System.out.println(s);class Person public Person()System.out.println(1)Persons no-arg constructor is invoked);7.执行 println追踪执行过程public class Faculty extends Employee public static void main(String args)new Faculty();public Faculty()System.out.println(4)Facultys no-arg constructor is invok
展开阅读全文