Java中具有全局变量的抽象类是不是设置?

时间:2016-04-14 14:43:33

标签: java abstract-class

我有2个类设置,都扩展了Module类。我尝试在其中一个中设置2个整数,在另一个中使用2个整数。 然而,当我执行所有内容时,它确实被设置(我知道因为调试)但是当用于打印'跑步,它仍然是0。

我不知道自己做错了什么。

模块类:

grep -P '^(?!Z12|C10)' input_file

Foo1:

public abstract class Module {
     protected int min, max;
}

foo2的:

public class Foo1 extends Module {
     public void setMinMax(){
         min = 2;
         max = 5;
     }
}

2 个答案:

答案 0 :(得分:1)

您有2个不同类的2个实例。 Foo1的一个实例,其中包含自己的min / max,以及Foo2的一个实例,再次具有自己的{{1} }} / min

请注意,您的max类提供了字段,每次实例化派生实例(FooFoo1)时,您都会获得一个带有新集的新类字段(包括从基类派生的字段)

答案 1 :(得分:0)

设置一个实例时,它对另一个实例没有影响。每个实例都有自己的字段。很可能你想象的是

public abstract class Module {
     protected static int min, max;
}

这样,字段将在Module的所有实例之间共享。您应该只从静态方法设置这些字段,最好是在Module

但是,我会避免这样做,或尽可能使用可变静态字段。