java – 如何在抽象超类中定义常量/最终变量,但将其分配给子类?

前端之家收集整理的这篇文章主要介绍了java – 如何在抽象超类中定义常量/最终变量,但将其分配给子类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个抽象类,我想要声明最终变量.

但是,我只想在我的子类的构造函数中为这些变量赋值.

显然,这是不可能的,因为所有的“最终的字段都必须被初始化”.我不明白为什么,因为不可能实例化一个抽象类.

我想要的是这样的:

  1. abstract class BaseClass {
  2. protected final int a;
  3. }
  4.  
  5. class SubClass extends BaseClass {
  6. public SubClass() {
  7. a = 6;
  8. }
  9. }

我想象一下类似于实现接口的方法.那么你也被迫在(子)类中实现方法.

解决方法

您应该在抽象类中定义一个构造函数,该构造函数为一个值赋值,并从您的子类中调用此构造函数.这样,您将确保始终初始化最终属性.
  1. abstract class BaseClass {
  2. protected final int a;
  3.  
  4. protected BaseClass(int a)
  5. {
  6. this.a = a;
  7. }
  8. }
  9.  
  10. class SubClass extends BaseClass {
  11. public SubClass() {
  12. super(6);
  13. }
  14. }

猜你在找的Java相关文章