当前位置:首页 > 文章列表 > 文章 > java教程 > 多态如何减少代码冗余?原理与实战应用

多态如何减少代码冗余?原理与实战应用

2026-01-21 18:42:40 0浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《多态减少代码冗余的原理与应用》,正文内容主要涉及到等等,如果你正在学习文章,或者是对文章有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

多态通过父类引用调用子类重写方法避免重复分支逻辑,提升扩展性。如Shape抽象类定义area(),Circle和Rectangle各自实现,printArea(Shape s)统一处理,新增子类无需修改原有代码。

Java中多态性如何减少代码冗余

多态让同一段逻辑适配不同子类

Java 中多态性本身不直接“减少代码行数”,而是通过 父类引用指向子类对象,把重复的调用逻辑抽到统一位置,避免为每个子类写一套几乎相同的流程代码。关键在于:行为差异封装在子类的重写方法里,主流程只面向接口或父类编码。

Shape 举例:避免 if-else 判断类型再调用

常见冗余写法是根据对象实际类型用 if (obj instanceof Circle)switch 分支调用不同方法。这种代码随子类增多而膨胀,且每次新增子类都要改原有判断逻辑。

正确做法是定义统一方法签名,在子类中各自实现:

abstract class Shape {
    abstract double area();
}
<p>class Circle extends Shape {
final double radius;
Circle(double r) { this.radius = r; }
@Override double area() { return Math.PI <em> radius </em> radius; }
}</p><p>class Rectangle extends Shape {
final double width, height;
Rectangle(double w, double h) { this.width = w; this.height = h; }
@Override double area() { return width * height; }
}</p><p>// 调用方无需知道具体类型
void printArea(Shape s) {
System.out.println("Area: " + s.area()); // 多态分发,自动调用对应子类实现
}</p>

ArrayList 集合统一处理多个子类实例

当需要批量操作不同子类型的对象时,若不用多态,就得维护多个同构集合(ListList),并为每个写一遍循环逻辑。多态允许用一个泛型集合容纳所有子类,并复用同一段遍历+调用代码。