#pragma twice

KAB-studio > プログラミング > Javaのオブジェクト指向入門 > 2. クラスQ and A > 2.2 参照型変数とインスタンスをまとめて作れない?
 
前のページへつぎ

2.2 参照型変数とインスタンスをまとめて作れない?

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

参照型変数とインスタンスをまとめて作る

 質問:クラスを作るときに「int i = 100;」みたいにできないの?
 解答:できます。

 前の章では参照とインスタンスを別々に作っていました。

// SimpleClassRunner.java

/**
 * フィールド1つだけ持つシンプルなクラス。
 */
class SimpleClass
{
    // int型変数のフィールドdataを定義します。
    int data;
}

/**
 * 実行用クラス。このクラスを実行してください。
 */
class SimpleClassRunner
{
    public static void main( String[] args )
    {
        // SimpleClassクラスの参照型変数refを作ります。
        SimpleClass ref;

        // SimpleClassクラスのインスタンスを作り、
        // その参照をref変数に入れます。
        ref = new SimpleClass();

        // ref変数内の参照を通して、SimpleClassクラスの
        // インスタンスに入っているdataフィールドに
        // 数値を入れます。
        ref.data = 100;

        // 今度はそれを取り出して出力します。
        System.out.println( ref.data );
        // 出力結果:
        // 100
    }
}
// SimpleClassRunner.java
/**
 * フィールド1つだけ持つシンプルなクラス。
 */
class SimpleClass
{
	// int型変数のフィールドdataを定義します。
	int data;
}
/**
 * 実行用クラス。このクラスを実行してください。
 */
class SimpleClassRunner
{
	public static void main( String[] args )
	{
		// SimpleClassクラスの参照型変数refを作ります。
		SimpleClass ref;
		// SimpleClassクラスのインスタンスを作り、
		// その参照をref変数に入れます。
		ref = new SimpleClass();
		// ref変数内の参照を通して、SimpleClassクラスの
		// インスタンスに入っているdataフィールドに
		// 数値を入れます。
		ref.data = 100;
		// 今度はそれを取り出して出力します。
		System.out.println( ref.data );
		// 出力結果:
		// 100
	}
}

 でも、一緒に作ることもできます。

// RefAndInstanceRunner.java

/**
 * フィールド1つだけ持つシンプルなクラス。
 * (SimpleClassと同じものです)
 */
class SimpleClass2
{
    // int型変数のフィールドdataを定義します。
    int data;
}

/**
 * 実行用クラス。このクラスを実行してください。
 */
class RefAndInstanceRunner
{
    public static void main( String[] args )
    {
        // SimpleClass2クラスの参照型変数refを作り、同時に
        // SimpleClass2クラスのインスタンスを作って、
        // インスタンスへの参照をrefに入れます。
        SimpleClass2 ref = new SimpleClass2();

        // あとは同じように使えます。
        ref.data = 100;
        System.out.println( ref.data );
        // 出力結果:
        // 100
    }
}
// RefAndInstanceRunner.java
/**
 * フィールド1つだけ持つシンプルなクラス。
 * (SimpleClassと同じものです)
 */
class SimpleClass2
{
	// int型変数のフィールドdataを定義します。
	int data;
}
/**
 * 実行用クラス。このクラスを実行してください。
 */
class RefAndInstanceRunner
{
	public static void main( String[] args )
	{
		// SimpleClass2クラスの参照型変数refを作り、同時に
		// SimpleClass2クラスのインスタンスを作って、
		// インスタンスへの参照をrefに入れます。
		SimpleClass2 ref = new SimpleClass2();
		// あとは同じように使えます。
		ref.data = 100;
		System.out.println( ref.data );
		// 出力結果:
		// 100
	}
}

 これは、単に別々にしていたものを一緒にしただけです。
 つまり、

        SimpleClass2 ref;
        ref = new SimpleClass2();
		SimpleClass2 ref;
		ref = new SimpleClass2();

 を、

        SimpleClass2 ref = new SimpleClass2();
		SimpleClass2 ref = new SimpleClass2();

 と書いただけです。

 していることに違いはないので、どちらの方法でも構いません。

2.2 参照型変数とインスタンスをまとめて作れない?
このページは、Java言語を用いたオブジェクト指向プログラミングのチュートリアル解説を行う「Javaのオブジェクト指向入門」の一ページです。
詳しい説明は「Javaのオブジェクト指向入門」目次をご覧ください。