MST

星途 面试题库

面试题:Java多态如何在简单项目中提高代码可维护性

假设有一个简单的图形绘制项目,包含圆形、矩形和三角形。请使用Java多态实现该项目,并阐述多态如何提高代码的可维护性。
22.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

1. 定义图形接口

public interface Shape {
    void draw();
}

2. 实现圆形类

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

3. 实现矩形类

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

4. 实现三角形类

public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}

5. 使用多态

public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle();
        Shape rectangle = new Rectangle();
        Shape triangle = new Triangle();

        circle.draw();
        rectangle.draw();
        triangle.draw();

        Shape[] shapes = {circle, rectangle, triangle};
        for (Shape shape : shapes) {
            shape.draw();
        }
    }
}

多态提高代码可维护性的阐述

  1. 易于扩展:当需要新增一种图形,比如菱形,只需要创建一个实现Shape接口的Diamond类并实现draw方法,无需修改现有代码。例如:
public class Diamond implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制菱形");
    }
}

在使用Shape数组或集合的地方,直接添加Diamond对象即可,如Shape[] shapes = {circle, rectangle, triangle, new Diamond()};。 2. 降低耦合:各个图形类只关注自身的绘制逻辑,依赖于统一的Shape接口,而不是彼此之间直接关联。如果某个图形类的绘制逻辑发生改变,只需要修改该类内部代码,不会影响其他图形类和使用Shape接口的地方。例如Circle类修改绘制算法,不影响RectangleTriangle类。 3. 代码复用:在操作图形的地方,如main方法中使用Shape数组或集合来统一处理不同图形,复用了遍历和调用draw方法的代码,提高了代码复用性,减少了重复代码。