首页 > 解决方案 > 避免在兄弟类中重复代码

问题描述

初学者问题 - 如何避免在兄弟类中重复代码,每个类都有自己不同版本的同一字段?请参见下面的示例:我可以以某种方式将 getName() 方法(以及更复杂的方法)移动到父类吗?

public abstract class Car {
    public abstract String getName();
}

public class PassengerCar extends Car {
   private String name = "Passenger Car";

   @Override
   public String getName() { return name; }
}

public class CoalCar extends Car {
   private String name = "Coal Car";

   @Override
   public String getName() { return name; }
}

标签: java

解决方案


例如,您可以:在父类中创建一个带有名称的构造函数,并在子类的构造函数中指定该名称:

abstract class Car {

    private String name;

    public Car(String name) {
        this.name = name;
    }

    public String getName() { return name; }

}

class PassengerCar extends Car {

    public PassengerCar() {
        super("Passenger Car");
    }

}

class CoalCar extends Car {

    public CoalCar() {
        super("Coal Car");
    }

}

然后可以这样使用:

Car passenger = new PassengerCar();
System.out.println(passenger.getName());

这打印出来:

Passenger Car

推荐阅读