Java 多态接口确定使用的实现类

在 Java 中,多态是面向对象编程的一个重要特性,能够提高代码的灵活性和可扩展性。当一个接口有多个实现类时,我们可以通过接口引用指向不同的实现类对象,实现代码的解耦和复用。

多态接口的使用

假设有一个接口 Shape 表示图形,其中包含一个抽象方法 draw

public interface Shape {
    void draw();
}

我们定义了两个实现类 CircleRectangle 分别实现 Shape 接口:

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw a circle.");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw a rectangle.");
    }
}

在使用多态时,可以用接口类型的引用指向具体的实现类对象,例如:

Shape circle = new Circle();
Shape rectangle = new Rectangle();

circle.draw();     // 输出:Draw a circle.
rectangle.draw();  // 输出:Draw a rectangle.

确定使用的实现类

在实际应用中,有时我们需要确定一个接口引用指向的是哪个实现类对象,可以通过 instanceof 关键字来判断。

public class Main {
    public static void main(String[] args) {
        Shape shape = new Circle();
        
        if (shape instanceof Circle) {
            System.out.println("This shape is a circle.");
        } else if (shape instanceof Rectangle) {
            System.out.println("This shape is a rectangle.");
        } else {
            System.out.println("Unknown shape.");
        }
    }
}

在上面的例子中,我们可以根据 shape 引用的实际类型来确定是哪个实现类对象。如果 shapeCircle 类型,则输出 This shape is a circle.;如果是 Rectangle 类型,则输出 This shape is a rectangle.;否则输出 Unknown shape.

总结

通过 instanceof 关键字可以方便地确定多态接口引用指向的是哪个实现类对象,从而实现对具体对象类型的判断和处理。

pie
    title 多态接口使用统计
    "Circle" : 50
    "Rectangle" : 50

在实际编程中,多态接口的使用能够简化代码逻辑,提高代码的可维护性和扩展性,是面向对象编程中一种重要的设计原则。通过合理地使用多态,可以使代码更加灵活和可读,提高开发效率。