参照型変数とインスタンスをまとめて作る
質問:クラスを作るときに「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
}
}
/**
* フィールド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
}
}
/**
* フィールド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();
ref = new SimpleClass2();
SimpleClass2 ref; ref = new SimpleClass2();
を、
SimpleClass2 ref = new SimpleClass2();
SimpleClass2 ref = new SimpleClass2();
と書いただけです。
していることに違いはないので、どちらの方法でも構いません。




