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

すべてのサブクラスは、基本クラスの同じ静的変数にアクセスします。静的変数はクラスごとに 1 回読み込まれ、インスタンス化には依存しません。

したがって、すべてのサブクラスは同じ静的変数を共有します。つまり、基本クラスで静的として定義されたライブラリです。

静的変数は継承されませんが、変数の隠蔽と呼ばれるサブクラスで同様に定義された変数によって隠されることがあります。

はい、すべてのサブクラスから同じ bufferLibrary にアクセスします。

于 2013-03-28T02:49:52.613 に答える