【发布时间】:2020-11-17 18:57:06
【问题描述】:
我正在编写一个抽象类并有一些子类扩展它。我在子类中有完全相同的方法和相同的实现,我想知道是否有办法避免代码重复。问题是,虽然每个类中的代码完全相同,但它使用了该类的静态变量。有没有办法让方法只写一次(例如在抽象类中)并让方法从当前对象的类类型中访问静态成员“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;
}
}
【问题讨论】:
-
您可以通过简单地删除静态最终字段来避免代码重复。只需执行
public String getName() { return "Bus a Bus A"; }。具有相同名称的静态字段不能以任何合理的方式重用(即它们没有任何有意义的名称相关,就像私有方法一样)。 -
Java 6?真的吗?