第11章继承和多态Liang,Introduction toJavaProgramming,EighthEdition,(c)2011PearsonEducation,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 1 第11章 继承和多态
动因假设要定义一个类来对圆、矩形和三角形建模。这些类有很多共同的特性。设计这些类来避免余的最好的方式是什么?答案就是使用继承Liang.Introduction to JavaProgramming.EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 2 动 因 假设要定义一个类来对圆、矩形和三角形 建模。这些类有很多共同的特性。设计这 些类来避免冗余的最好的方式是什么?答 案就是使用继承
学习目标通过继承由父类创建子类(第11.2节)。(第11.3节)。使用关键字super调用父类的构造方法和方法(第11.4节)在子类中覆盖实例方法,区分覆盖和重载的不同(第11.5节)。探究Obiect类中的toStringQ方法(第11.6节)。理解多态性和动态绑定(第11.7-11.8节)。描述转换并解释显式向下转换的必要性(第11.9节)探究Obiect类中的equals方法(第11.10节)存储、提取和操作ArrayList中的对象(第11.11节)使用ArrayList实现Stack类(第11.12节)。使用可见性修饰符protected使父类中的数据和方法可以被子类访问(第11.13节)。(第11.14节)使用修饰符final防止类的扩展以及方法的覆盖Liang,Introduction toJava Programming.EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
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节)
父类和子类GeometricObject对象的颜色(默认值:white)-color: String表明对象是否填充颜色(默认值:false)-filled: boolean对象创建的日期-dateCreated: java.util.Date+GeometricObject创建一个GeometricObject+GeometricObject(color: String,创建一个带特定颜色和填充值的GeometricObjectfilled: boolean)返回颜色getColorO:StringGeometricObjectl设置新的颜色+setColor(color: String): void返回filled属性+isFilled(): boolean设置filled属性+setFilled(filled: boolean): void返回dateCreated.+getDateCreated(O: java.util.DateCircle4返回这个对象的字符串表述+toString(): String个至RectangleCircle-width: double-radius: doubleRectanglel-height: double+Circle()+RectangleO+Circle(radius: double)+Rectangle(width: double, height; double)+Circle(radius: double, color: String,filled: boolean)+Rectangle(width:double,height:double+getRadiusO): doublecolor: String, filled: boolean)TestCircleRectangle+getWidth(): double+setRadius(radius: double): void+setWidth(width: double): voidgetArea():double+getHeight(): double+getPerimeter(): double+setHeight(height: double): void+getDiameter(O: doubleRun+getAreaO: double+printCircle(): void+getPerimeterO: doubleLiang,Introduction to Java Programming,Eighth Edition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
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
父类的构造方法能继承吗?父类的构造方法不能被继承它们被显式或隐式地调用使用super关键字显式调用构造方法可用来构造一个类的实例。不像属性和方法,父类的构造方法是不能被子类继承的。它们只能从子类的构造方法中用关键字super调用。如果没有显式使用关键字super,那么将自动调用父类的无参构造方法。Liang,Introduction toJava Programming.EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 5 父类的构造方法能继承吗? 父类的构造方法不能被继承。 它们被显式或隐式地调用。 使用super关键字显式调用。 构造方法可用来构造一个类的实例。不像属性和方 法,父类的构造方法是不能被子类继承的。它们只 能从子类的构造方法中用关键字super调用。如果没 有显式使用关键字super,那么将自动调用父类的无 参构造方法