中国高校课件下载中心 》 教学资源 》 大学文库

《Java程序设计》课程教学课件(PPT讲稿)第11章 继承和多态

文档信息
资源类别:文库
文档格式:PPT
文档页数:48
文件大小:564.5KB
团购合买:点击进入团购
内容简介
《Java程序设计》课程教学课件(PPT讲稿)第11章 继承和多态
刷新页面文档预览

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 第11章 继承和多态

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 2 动 因 假设要定义一个类来对圆、矩形和三角形 建模。这些类有很多共同的特性。设计这 些类来避免冗余的最好的方式是什么?答 案就是使用继承

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 3 学习目标 通过继承由父类创建子类 (第11.2节)。 使用关键字super调用父类的构造方法和方法 (第11.3节)。 在子类中覆盖实例方法 (第11.4节)。 区分覆盖和重载的不同 (第11.5节)。 探究Object类中的toString()方法 (第11.6节)。 理解多态性和动态绑定 (第11.7-11.8节)。 描述转换并解释显式向下转换的必要性 (第11.9节)。 探究Object类中的equals方法 (第11.10节)。 存储、提取和操作ArrayList中的对象 (第11.11节)。 使用ArrayList实现Stack类 (第11.12节)。 使用可见性修饰符protected使父类中的数据和方法可以被子类访 问 (第11.13节)。 使用修饰符final防止类的扩展以及方法的覆盖 (第11.14节)

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 4 父类和子类 GeometricObject1 Circle4 Rectangle1 TestCircleRectangle Run GeometricObject -color: String -filled: boolean -dateCreated: java.util.Date +GeometricObject() +GeometricObject(color: String, filled: boolean) +getColor(): String +setColor(color: String): void +isFilled(): boolean +setFilled(filled: boolean): void +getDateCreated(): java.util.Date +toString(): String 对象的颜色(默认值:white) 表明对象是否填充颜色(默认值:false) 对象创建的日期 创建一个 GeometricObject 创建一个带特定颜色和填充值的 GeometricObject 返回颜色 设置新的颜色 返回 filled 属性 设置 filled 属性 返回 dateCreated. 返回这个对象的字符串表述 Circle -radius: double +Circle() +Circle(radius: double) +Circle(radius: double, color: String, filled: boolean) +getRadius(): double +setRadius(radius: double): void +getArea(): double +getPerimeter(): double +getDiameter(): double +printCircle(): void Rectangle -width: double -height: double +Rectangle() +Rectangle(width: double, height: double) +Rectangle(width: double, height: double color: String, filled: boolean) +getWidth(): double +setWidth(width: double): void +getHeight(): double +setHeight(height: double): void +getArea(): double +getPerimeter(): double

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 5 父类的构造方法能继承吗? 父类的构造方法不能被继承。 它们被显式或隐式地调用。 使用super关键字显式调用。 构造方法可用来构造一个类的实例。不像属性和方 法,父类的构造方法是不能被子类继承的。它们只 能从子类的构造方法中用关键字super调用。如果没 有显式使用关键字super,那么将自动调用父类的无 参构造方法

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 6 父类的构造方法总会被调用吗? 构造方法可以调用重载的构造方法或它的父类的构造 方法。如果它们都没有被显式调用,那编译器就会自 动地将super()作为构造方法的第一条语句。例如: public A(double d) { // some statements } 等价于 public A(double d) { super(); // some statements } public A() { } 等价于 public A() { super(); }

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 7 使用super关键字 调用父类的构造方法 调用父类的方法 关键字super是指这个super出现的类的父类。 这个关键字super有以下两种途径:

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 8 警 告 要调用父类的构造方法就必须使用关键 字super。在子类中调用父类构造方法的 名字会引起一个语法错误。Java要求使 用关键字super的语句应该是构造方法的 第一条语句

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 9 构造方法链 public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } 构造一个类的实例时,将会调用沿着继承链的所有父类的构造方法。这就 被称为构造方法链(constructor chaining)

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 10 跟踪执行 public class Faculty extends Employee { public static void main(String[] args) { new Faculty(); } public Faculty() { System.out.println("(4) Faculty's no-arg constructor is invoked"); } } class Employee extends Person { public Employee() { this("(2) Invoke Employee’s overloaded constructor"); System.out.println("(3) Employee's no-arg constructor is invoked"); } public Employee(String s) { System.out.println(s); } } class Person { public Person() { System.out.println("(1) Person's no-arg constructor is invoked"); } } 1. 从main方法 开始执行 动 画

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档