Java では、拡張クラスの特定の変数値を変更できます。
これは、静的変数が同じクラスのすべてのオブジェクト間で共有されるためです。
オブジェクト(インスタンス)ではなく、クラスに属する変数です。
したがって、親クラスの静的変数を拡張する場合、実際には拡張クラスの一部ではありませんが、アクセス可能です (それらがプライベートでない限り)。
さらに、これは次のようなことを行うために使用できます。
- 拡張クラスには異なる STATIC CONSTANT を使用します。
これの用途は、instanceof を利用するのではなく、STATIC 整数に基づいてクラスを識別することです。これをさらにスイッチと組み合わせて、オブジェクトの種類に基づいて動作を変更できます。
したがって、最も基本的な例では、TYPE を表す変数を作成するとします。
class A
{
public static final int NODE_TYPE = NODE_PERSON;
public static final int NODE_PERSON = 0;
public static final int NODE_CAR = 1;
}
class B extends Class A
{
public static int NODE_TYPE = NODE_CAR;
}
これは、Eclipse 抽象構文ツリーを含む多くのフレームワークで使用されています。
http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTNode.html
さまざまなノード タイプを表す STATIC INTEGERS のリストが表示されます。