MST
星途 面试题库

面试题:Java多态在系统灵活性中的应用

请阐述在Java中,如何通过多态来设计一个简单的图形绘制系统,使得系统易于添加新的图形类型且不影响原有代码结构。请用代码示例说明,需包含抽象类、子类以及多态的使用。
39.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 定义抽象图形类
    abstract class Shape {
        // 抽象方法,用于绘制图形
        public abstract void draw();
    }
    
  2. 定义具体图形子类
    • 圆形子类
    class Circle extends Shape {
        @Override
        public void draw() {
            System.out.println("绘制圆形");
        }
    }
    
    • 矩形子类
    class Rectangle extends Shape {
        @Override
        public void draw() {
            System.out.println("绘制矩形");
        }
    }
    
  3. 使用多态来绘制图形
    public class GraphicsSystem {
        public static void main(String[] args) {
            // 创建图形数组
            Shape[] shapes = new Shape[2];
            shapes[0] = new Circle();
            shapes[1] = new Rectangle();
    
            // 遍历数组并调用draw方法,体现多态
            for (Shape shape : shapes) {
                shape.draw();
            }
        }
    }
    

在上述代码中:

  • Shape 类是一个抽象类,定义了所有图形都需要实现的 draw 抽象方法。
  • CircleRectangle 类继承自 Shape 类,并实现了 draw 方法,分别绘制圆形和矩形。
  • GraphicsSystem 类的 main 方法中,通过创建不同具体图形类的对象,并将它们存储在 Shape 类型的数组中,然后遍历数组调用 draw 方法,实现了多态。这样,当需要添加新的图形类型时,比如三角形,只需要创建一个继承自 ShapeTriangle 类并实现 draw 方法,在 main 方法中添加 Triangle 对象到 Shape 数组中,而不需要修改原有 CircleRectangle 类的代码结构。