oop—在java中访问不同类的静态成员时避免代码重复

brccelvz  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(321)

我正在写一个抽象类,并让一些子类扩展它。我在子类中使用了完全相同的方法和相同的实现,我想知道是否有办法避免代码重复。问题是,尽管每个类中的代码都完全相同,但它使用了该类的一个静态变量。有没有办法让方法只写一次(例如在抽象类中)并且让方法访问静态成员 NAME “从当前对象的类类型?
换句话说,有没有办法实现这个方法 getName() 只有一次,把钱还给我 NAME 当前类类型的静态变量?

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

public class Bus extends car{

    private static final String NAME = "Bus a Bus A";

    public String getName() {
        return Bus.NAME;
    }
}

public class Taxi extends car{

    private static final String NAME = "TAXiiii";

    public String getName() {
        return Taxi.NAME;
    }
}

public class Motor extends car{

    private static final String NAME = "motor hehe";

    public String getName() {
        return Motor.NAME;
    }
}
o75abkj4

o75abkj41#

为什么不直接把名字传给超级构造函数呢?尽管这样就不需要 Car 成为 abstract ,因为您可以简单地从 getName 方法。

public class Car {
    private final String name;

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

    public String getName() {
        return name;
    }
}

public class Bus extends Car {

    private static final String NAME = "Bus a Bus A";

    public Bus() {
        super(NAME);
    }
}

public class Taxi extends Car {

    private static final String NAME = "TAXiiii";

    public Taxi() {
        super(NAME);
    }
}

public class Motor extends Car {

    private static final String NAME = "motor hehe";

    public Motor() {
        super(NAME);
    }
}

相关问题