设置父类的值时,哪种方式更可取:
设置字段
public abstract class Weapon {
final Integer damage;
}
public class Knive extends Weapon {
public Knive(){
damage = 100;
}
}
重写一个方法
public abstract class Weapon {
public abstract int getDamage();
}
public class Knive extends Weapon {
@Override
public int getDamage(){
return 100;
}
}
还是只是个人喜好?
最佳答案
我认为这要视情况而定。两个例子都是正确的。
当你有继承时,你的第一个方法更可取,并且是子类数量的一般逻辑。 但是,一定要让您的属性(property)受到保护
。
第二种方法,更适合你使用轻型类,比如没有默认实现的策略。在这种情况下,您可以将父类更改为 interface
。
public abstract class Weapon {
protected final Integer damage;
protected Weapon(Integer damage) {
this.damage = damage;
}
// more logic here
}
public class Knive extends Weapon {
public Knive(){
super(100);
}
}
或
public interface Weapon {
Integer getDamage();
}
public class Knive implements Weapon {
// light-weight strategy
public Integer getDamage() {
return 100;
}
}
关于java - 使用字段或重写方法来定义抽象类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893319/