第2章 Java面向对象编程
18_一个案例了解多态的实际意义
多态的分类:特定的(强制的,重载的)、通用的(参数的,包含的)
(3)参数的多态
参数多态允许把许多类型抽象成单一的表示。例如,在一个名为List的抽象类中,描述了一组具有同样特征的对象,提供
了一个通用的模板。我们可通过制定一种类型以重用这个抽象类。这些参数可以是用户定义的类型,很多用户都可以使用
这个抽象类,因此参数多态毫无疑问称为最强大的多态
多态的意义在于:可以屏蔽不同子类差异性编写通用的代码,从而产生不同的效果
案例:
形状:横坐标、纵坐标
矩形:长度、宽度
写一个方法既能打印矩形又能打印圆形
TestShape.java
public static void draw(Shape s){
//在编译阶段调用Shape类的show()方法,在运行阶段调用子类重写的show()方法
//虽然看似调用同一个show()方法,但是根据实参的不同最终调用不同的版本带来不同的结果
s.show();
}
public static void main(String[] args){
Rect r = new Rect(1,2,3,4);//矩形,Rect为Shape子类
TestShape.draw(r);//不同的参数将会调用不同子类中的show方法
Circle c = new Circle(5,6,7);//圆形,Circle为Shape子类
TestShape.draw(c);
}