扩展类,如果我按照这种方式继承参数吗?

时间:2013-03-28 02:36:02

标签: java inheritance extends

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

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();
    }

}

在bootstrap类中以这种方式声明bufferLibrary:

RIBaseObject.sSystemRegistry.bufferLibrary = new BufferLibrary();

从扩展BaseObject的任何类中获取它,我会访问相同的bufferLibrary对象吗?或者会有所不同?

1 个答案:

答案 0 :(得分:0)

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

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

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

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