实现Java多态
在Java中,多态性是面向对象编程中的一个重要概念,它允许父类引用变量指向子类对象。通过多态性,我们可以实现不同的子类实例化,而不改变代码中的父类引用类型。
实际问题
假设我们有一个图形类 Shape
,它有两个子类 Circle
和 Rectangle
。我们想要通过父类引用类型来实例化这两个不同的子类,并调用各自的方法。这时就需要使用多态性来实现。
示例代码
// 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
以及它的两个子类 Circle
和 Rectangle
。在 Main
类中,我们通过父类引用类型 Shape
实例化了 Circle
和 Rectangle
,然后分别调用了它们的 getArea
方法。
结果展示
下面通过饼状图展示了 Circle
和 Rectangle
的面积占比:
pie
title Shape Area
"Circle" : 78.54
"Rectangle" : 12.0
结论
通过实现Java多态性,我们可以很容易地实例化不同子类并调用它们的方法,从而实现代码的灵活性和可扩展性。在面向对象编程中,多态性是一个非常有用的技朧,能够提高代码的可读性和维护性。