4.1.4 继承性(续)JAVA4.继承性多重继承类A类B类C类D类F类G一个类拥有多个父类>产生二义性,例类C和类D都有一个同名的方法,类G?Java中仅仅支持单一继承,同时Java采用Interface(接口)实现多重继承而避免父类二义性11
11 4. 继承性 ◼ 多重继承 类A 类B 类C 类D 类F 类G ◼ 一个类拥有多个父类→产生二义性,例类C和类D都 有一个同名的方法,类G? ◼ Java中仅仅支持单一继承,同时Java采用 Interface(接口)实现多重继承而避免父类二义性 4.1.4 继承性 (续)
4.1.5多态性JAVA5.多态性表现在继承中一方法的重写子类从父类继承(extends扩展)而来多个子类同属一个父类,所有子类有相同的父类继承父类的方法在不同的子类中有不同的表现形式表现在用一个类中一方法的重载12
12 5. 多态性 ◼ 表现在继承中→方法的重写 ◼ 子类从父类继承(extends扩展)而来 ◼ 多个子类同属一个父类,所有子类有相同的父类 ◼ 继承父类的方法 ◼ 在不同的子类中有不同的表现形式 ◼ 表现在用一个类中→方法的重载 4.1.5 多态性
4.1.5多态性(续)JAVA5.多态性多态性在继承中的表现Shapedraw()erase()ACircleTriangleSquaredraw()draw()draw()erase()erase()erase()13
13 5. 多态性 ◼ 多态性在继承中的表现 4.1.5 多态性 (续)
4.1.5多态性(续)JAVA5.多态性classShape{class Square extends Shape voiddraw())void draw() void erase() 0)System.out.println("Square.draw()")人}void erase() classCircleextendsShapevoid draw() (System.out.println("Square.erase()")}System.out.println("Circle.draw()");}}classTriangleextendsShapevoid eraseOvoid draw()System.out.println("Circle.erSystem.out.println("Triangle.draw()");ase()"); )77void erase() System.out.println("Triangle.erase()");人
14 5. 多态性 class Square extends Shape { void draw() { System.out.println("Square.draw()"); } void erase() { System.out.println("Square.erase()“); } } class Triangle extends Shape { void draw() { System.out.println("Triangle.draw()"); } void erase() { System.out.println("Triangle.erase()"); } } class Shape { void draw() {} void erase() {} } class Circle extends Shape { void draw() { System.out.println("Circle.dr aw()"); } void erase() { System.out.println("Circle.er ase()"); } } 4.1.5 多态性 (续)
Qircle.drawO)T4.1.5多态性(续friangle.drawO)JAVACircle.draw()5.多态性Circle.drawO)Circle.drawO)public class Teststatic void main(Stringl)Square.drawO)s)(public static ShapeTriangle.drawO)ape[] s=newShape[9];randShape(){Square.draw()switch(int)(Math.nti=0;i<s.length;i++)Square.drawO)3)) [ij=randShape(;default:for(inti=0;i<s.length;i++)case 0:return new Circle0s[i].draw;case 1:returnnew1Square();case 2: return newTriangle();
15 5. 多态性 public class Test { public static Shape randShape() { switch((int)(Math.random() * 3)) { default: case 0: return new Circle(); case 1: return new Square(); case 2: return new Triangle(); } } public static void main(String[] args) { Shape[] s = new Shape[9]; for(int i = 0; i < s.length; i++) s[i] = randShape(); for(int i = 0; i < s.length; i++) s[i].draw(); } } Circle.draw() Triangle.draw() Circle.draw() Circle.draw() Circle.draw() Square.draw() Triangle.draw() Square.draw() Square.draw() 4.1.5 多态性 (续) T