举一个Java中的多态的例子
举一个Java中的多态的例子。
以下是一个Java中的多态的例子,假设有一个Shape类和两个子类Circle和Rectangle:
public abstract class Shape { public abstract double area();}public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius;} @Override public double area() { return Math.PI * radius * radius;}}public class Rectangle extends Shape { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height;} @Override public double area() { return width * height;}}
在主函数中,我们可以创建Shape类型的数组,并分别向其中添加Circle和Rectangle对象:
public static void main(String[] args) { Shape[] shapes = new Shape[2]; shapes[0] = new Circle(5); shapes[1] = new Rectangle(3, 4); for (Shape shape : shapes) { System.out.println("Area of " + shape.getClass().getSimpleName() + " is " + shape.area());}}
通过这个例子,我们可以看到Shape类定义了一个抽象方法area(),Circle类和Rectangle类分别重写了这个方法。在主函数中,我们创建了Shape类型的数组,并分别向其中添加Circle和Rectangle对象。在遍历数组时,我们调用了每个对象的area()方法,实际上执行的是子类中重写后的area()方法,这就是多态的体现。因为我们不知道数组中的元素到底是Circle对象还是Rectangle对象,所以需要在运行时动态地确定调用哪个方法,这就是运行时多态性或动态多态性。