我有一个超类和两个扩展它的子类。我想初始化一个名为 radius 的变量,它可以在子类 A 中自由设置,但对于子类 B 总是相同的。我可以在每次创建对象 B 时初始化该变量,但我想知道是否可以使子类 B 中的变量 final 和 static,同时仍然能够在我的超类中实现 getter。我可能会实现更多的子类,它们的半径要么是最终的,要么是可变的。如果不是,我想知道解决我的问题的最优雅的解决方案是什么。这是一些示例代码,可以运行,但不是很好。
abstract class SuperClass {
public double getRadius() {
return this.radius;
}
protected double radius;
}
class A extends SuperClass{
public void setRadius(double radius) { // Would like to put this setter in SuperClass for future subclasses.
this.radius = radius;
}
}
class B extends SuperClass{
public B() {
radius = 0.2; //Want to make this static and final only for this subclass.
}
}
在一个子类中创建一个变量final和static,同时保留它
Java中其他变量
从技术上讲,你做不到。
字段要么是静态字段,要么是实例字段,不能同时是两者。
作为替代方案,覆盖getRadius()
in the B
您想要提供不同值的类:
@Override
public double getRadius() {
return 0.2;
}
为了使这个常量受到尊重,您还应该重写此中的设置器B
class:
@Override
public void setRadius(double radius) {
throw new UnsupportedOperationException();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)