实现Java多态

在Java中,多态性是面向对象编程中的一个重要概念,它允许父类引用变量指向子类对象。通过多态性,我们可以实现不同的子类实例化,而不改变代码中的父类引用类型。

实际问题

假设我们有一个图形类 Shape,它有两个子类 CircleRectangle。我们想要通过父类引用类型来实例化这两个不同的子类,并调用各自的方法。这时就需要使用多态性来实现。

示例代码

// Shape.java
public abstract class Shape {
    public abstract double getArea();
}

// Circle.java
public class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

// Rectangle.java
public class Rectangle extends Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    public double getArea() {
        return length * width;
    }
}

// Main.java
public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle(5.0);
        Shape rectangle = new Rectangle(3.0, 4.0);

        System.out.println("Circle Area: " + circle.getArea());
        System.out.println("Rectangle Area: " + rectangle.getArea());
    }
}

在上面的示例代码中,我们定义了一个抽象类 Shape 以及它的两个子类 CircleRectangle。在 Main 类中,我们通过父类引用类型 Shape 实例化了 CircleRectangle,然后分别调用了它们的 getArea 方法。

结果展示

下面通过饼状图展示了 CircleRectangle 的面积占比:

pie
    title Shape Area
    "Circle" : 78.54
    "Rectangle" : 12.0

结论

通过实现Java多态性,我们可以很容易地实例化不同子类并调用它们的方法,从而实现代码的灵活性和可扩展性。在面向对象编程中,多态性是一个非常有用的技朧,能够提高代码的可读性和维护性。