0

如果我像这样创建一个基础对象:

public abstract class RIBaseObject{
    static ObjectRegistry sSystemRegistry = new ObjectRegistry();

    public RIBaseObject() {
    }

    public abstract void reset();

}

并在我制作的每个(大多数)类中扩展这个基础对象,考虑到 ObjectRegistry 包含如下参数:

public class ObjectRegistry extends RIBaseObject {

    public BufferLibrary bufferLibrary;
    public CameraSystem cameraSystem;

    public ObjectRegistry() {
        super();
    }

}

将在引导类中以这种方式声明 bufferLibrary:

RIBaseObject.sSystemRegistry.bufferLibrary = new BufferLibrary();

让它从任何扩展 BaseObject 的类中访问同一个 bufferLibrary 对象?还是会有所不同?

4

1 回答 1

0

所有子类都将访问基类中的相同静态变量。静态变量每个类加载一次,它们不依赖于实例化。

所以你所有的子类都将共享相同的静态变量,即你的库在你的基类中定义为静态。

静态变量不是继承的,但可以被称为变量隐藏的子类中类似定义的变量隐藏。

所以是的,您将从所有子类访问相同的 bufferLibrary。

于 2013-03-28T02:49:52.613 回答