从具体类设置时获取重复字段



我需要在每个扩展AbstractClass ConcreteClass中定义常量值。由于某种原因,对象最终具有重复字段,一组字段等于零,下一组字段具有正确的值。

一些接口

public interface SomeInterface{
    double calculate();
} 

抽象类

public abstract class AbstractClass implements SomeInterface{
       double x, y;
       public double calculate(){
            return x*y;
       }
    }

混凝土类

public class ConcreteClass extends AbstractClass{
    final double x = 1.1;
    public setY(double y){
        this.y = y;
    }
} 

我需要我的具体类来存储常量值final double x = 1.1;同时从抽象类继承calculate()方法实现。

你已经声明了 x 两次,所以你得到了两个 x 变量;一个屏蔽了另一个。 它正在做你告诉它的事情。

若要让具体类设置一个值,请将它的设置放在 ConcreteClass 的(或所有)构造函数中。 不要再次声明它。

我不知道有什么方法可以宣布它是最终的,并且仍然可以在子类中更改它。

你可以做这样的事情来绕过 - 即使你不能在java中覆盖实例变量。

如果你只想让 Concrete 类有一个常量变量,并且基本抽象类将其用于计算方法 - 你可以尝试这样的事情。

public abstract class AbstractClass implements SomeInterface{
       double x, y;
    public void setX(double x){
        this.x = x;
    }
    public double calculate(){
        return x*y;
   }
}

然后在具体类中,您仍然可以拥有最终变量并将其传递给抽象类的 setter。

public class TestAbstractVariable extends TestAbstract {
    {
        final double x = 1.1;
        setX(x);
    }
    public void setY(double y){
        this.y = y;
    }
}

希望对您有所帮助。

谢谢保罗

相关内容

  • 没有找到相关文章

最新更新