You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java重构:如何处理Student与Professor类的重复属性?

重构方案:提取公共父类

最合理的重构方式是新增一个抽象父类Person,将Student和Professor中重复的属性(name、age、email)以及对应的getter方法封装进去,让两个子类继承这个父类,各自保留独有的属性和业务方法即可。

步骤1:创建Person父类

这个类包含两个子类共有的属性和方法,设为抽象类避免直接实例化:

public abstract class Person {
    private final String name;
    private final int age;
    private final String email;

    public Person(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getEmail() {
        return email;
    }
}

步骤2:修改Student类继承Person

移除重复的属性和方法,只保留Student独有的内容,通过super()调用父类构造方法初始化公共属性:

public class Student extends Person {
    private final String matrNr;
    private int semester;

    public Student(String name, int age, String email, String matrNr, int semester) {
        // 调用父类构造初始化公共属性
        super(name, age, email);
        this.matrNr = matrNr;
        this.semester = semester;
    }

    public String getMatrNr() {
        return matrNr;
    }

    public int getSemester() {
        return semester;
    }

    public void increaseSemester(){
        semester += 1;
    }
}

步骤3:修改Professor类继承Person

同样移除重复代码,保留独有的persNr属性和方法:

public class Professor extends Person {
    private final String persNr;

    public Professor(String name, int age, String email, String persNr) {
        super(name, age, email);
        this.persNr = persNr;
    }

    public String getPersNr() {
        return persNr;
    }
}

重构优势

  • 彻底消除代码冗余,符合DRY(Don't Repeat Yourself)原则;
  • 后续公共属性/方法的修改只需在Person类中操作一次,所有子类自动同步;
  • 清晰体现类之间的继承关系,契合面向对象设计思想。

内容的提问来源于stack exchange,提问作者B. Selin Zaza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:57:21