#pragma twice

KAB-studio > プログラミング > Javaのオブジェクト指向入門 > 4. staticはどこにある? > 4.3 staticメソッドからstaticフィールドを使う
 
前のページへつぎ

4.3 staticメソッドからstaticフィールドを使う

del.icio.us 登録する はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数 livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数 Yahoo!ブックマーク 詳細を表示 users RSSに登録
更新日: 2008/03/31
動作確認環境:Windows XP Professional SP2, Java SE 5

staticメソッド

 メソッドにも「staticなメソッド」があります。
 staticなフィールドと同じように、静的領域に作られるメソッドです。

// HasStaticMethodRunner.java

/**
 * staticメソッドとstaticフィールドを持つクラス。
 */
class HasStaticMethod
{
    // int型変数のstaticフィールドdataStaticを定義します。
    static int dataStatic;

    /**
     * dataStaticフィールドを出力するstaticメソッドです。
     */
    static void printData()
    {
        System.out.println( dataStatic );
    }
}

/**
 * 実行用クラス。このクラスを実行してください。
 */
class HasStaticMethodRunner
{
    public static void main( String[] args )
    {
        // staticフィールドに数値を入れます。
        HasStaticMethod.dataStatic = 100;

        // staticメソッドで出力します。
        HasStaticMethod.printData();
        // 出力結果:
        // 100
    }
}
// HasStaticMethodRunner.java
/**
 * staticメソッドとstaticフィールドを持つクラス。
 */
class HasStaticMethod
{
	// int型変数のstaticフィールドdataStaticを定義します。
	static int dataStatic;
	/**
	 * dataStaticフィールドを出力するstaticメソッドです。
	 */
	static void printData()
	{
		System.out.println( dataStatic );
	}
}
/**
 * 実行用クラス。このクラスを実行してください。
 */
class HasStaticMethodRunner
{
	public static void main( String[] args )
	{
		// staticフィールドに数値を入れます。
		HasStaticMethod.dataStatic = 100;
		// staticメソッドで出力します。
		HasStaticMethod.printData();
		// 出力結果:
		// 100
	}
}

 HasStaticMethodクラスは、staticフィールド1つに加え、staticメソッドを1つ持っています。

/**
 * staticメソッドとstaticフィールドを持つクラス。
 */
class HasStaticMethod
{
    // int型変数のstaticフィールドdataStaticを定義します。
    static int dataStatic;

    /**
     * dataStaticフィールドを出力するstaticメソッドです。
     */
    static void printData()
    {
        System.out.println( dataStatic );
    }
}
/**
 * staticメソッドとstaticフィールドを持つクラス。
 */
class HasStaticMethod
{
	// int型変数のstaticフィールドdataStaticを定義します。
	static int dataStatic;
	/**
	 * dataStaticフィールドを出力するstaticメソッドです。
	 */
	static void printData()
	{
		System.out.println( dataStatic );
	}
}

 メソッドの前にstaticを付けるとそのメソッドは「staticメソッド」になります。
 staticメソッドは、staticフィールドと同じように静的領域に作られます
 作られるタイミングはstaticフィールドと一緒です。

        // staticフィールドに数値を入れます。
        HasStaticMethod.dataStatic = 100;
		// staticフィールドに数値を入れます。
		HasStaticMethod.dataStatic = 100;

 そのクラスを初めて使用したとき静的領域が作られ、その中にstaticフィールドとstaticメソッドが作られます。

 staticメソッドの使い方は、staticフィールドと同じ「クラス名.メソッド名()」となります。

        // staticメソッドで出力します。
        HasStaticMethod.printData();
		// staticメソッドで出力します。
		HasStaticMethod.printData();

 staticメソッドはstaticフィールドを使うことができます

        System.out.println( dataStatic );
		System.out.println( dataStatic );

 dataStaticフィールドはstaticフィールドです。
 このようにstaticメソッドからstaticフィールドを使用することができます。

 この関係は、インスタンス内でのメソッドとフィールドの関係に似ています。
 静的領域の中にstaticフィールドとstaticメソッドが一緒に入っているので、たとえばこの例でdataStaticフィールドがprivateなフィールドだとしても、printData()メソッドはdataStaticフィールドを使うことができます。

4.3 staticメソッドからstaticフィールドを使う
このページは、Java言語を用いたオブジェクト指向プログラミングのチュートリアル解説を行う「Javaのオブジェクト指向入門」の一ページです。
詳しい説明は「Javaのオブジェクト指向入門」目次をご覧ください。