我有一个抽象类,其中包含一个变量' name'我希望我的子类初始化。其中哪一个是最好的方法。
@Getter
abstract class A {
private final String name;
protected A(String name) {
this.name = name;
}
}
class B extends A {
private static final NAME = "Raylan";
private final int age;
public B(int age) {
super(NAME);
this.age = age;
}
}
abstract class A {
private final String name;
public abstract String getName();
}
class B extends A {
private static final NAME = "Raylan";
private final int age;
public B(int age) {
this.age = age;
}
@Override
public String getName() {
return NAME;
}
}
答案 0 :(得分:0)
在name
中拥有私有A
而无法访问它是没用的。假设getName()
中有一个功能齐全的A
,请考虑B
中的多个构造函数:
class B extends A {
private static final String NAME = "Raylan";
private final int age;
public B(String name, int age) {
super(name);
this.age = age;
}
public B(int age) {
this(NAME, age);
}
public int getAge() {
return age;
}
}
这允许重复使用A
,否则B
扩展A
似乎没什么意义。组合而不是继承可能是另一种选择。