staticクラス
日本語 | 静的クラス |
英語 | static class |
ふりがな | すたてぃっくくらす |
フリガナ | スタティッククラス |
staticで修飾されたクラス。
「static class クラス名{ クラスの定義 }」のように、クラスの宣言の先頭にstaticが付けられたクラス。
内部クラスとして宣言する際に付ける事で、staticメソッドから普通に使用することができる。
本来の意味での「内部クラス」として使用する場合には、「インスタンスの中にインスタンスがある」という状態でなければならないため、staticクラスの場合には使用できない。逆に言うと、そのような利用方法を取らない場合にはstaticクラスの方が使いやすいだろう。
「static class クラス名{ クラスの定義 }」のように、クラスの宣言の先頭にstaticが付けられたクラス。
内部クラスとして宣言する際に付ける事で、staticメソッドから普通に使用することができる。
本来の意味での「内部クラス」として使用する場合には、「インスタンスの中にインスタンスがある」という状態でなければならないため、staticクラスの場合には使用できない。逆に言うと、そのような利用方法を取らない場合にはstaticクラスの方が使いやすいだろう。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
// staticメソッド。
public static void main( String[] args )
{
// StaticClassを作ります。
StaticClass staticClass = new StaticClass();
// あとは普通に使えます。
staticClass.output();
// StaticClass#output()
// 非staticクラスは同じようには作れません。
// NonStaticClass nonStaticClass = new NonStaticClass();
// コンパイルエラー:
// 型 Sample のエンクロージング・インスタンスを持つ割り振りを明示的に指定する必要があります。(例 x.new A() で、x が Sample のインスタンス)
// 非staticメソッドからも使えます。
Sample sample = new Sample();
sample.useStaticClass();
}
/**
* StaticClassクラスを使うメソッド(非staticメソッド)。
*/
private void useStaticClass()
{
// StaticClassを作ります。
StaticClass staticClass = new StaticClass();
// あとは普通に使えます。
staticClass.output();
// StaticClass#output()
// ちなみに非staticメソッドからなら
// 非staticクラスも使えます。
NonStaticClass nonStaticClass = new NonStaticClass();
nonStaticClass.output();
// StaticClass#output()
}
/**
* staticクラス。
*/
static class StaticClass
{
public void output()
{
System.out.println( "StaticClass#output()" );
}
}
/**
* 非staticクラス。
*/
class NonStaticClass
{
public void output()
{
System.out.println( "StaticClass#output()" );
}
}
}
// グローバルなstaticクラスは作れません。
// static class StaticClass{}
// コンパイルエラー:
//クラス StaticClass の無許可の修飾子 ; public、abstract、および final のみ許可されています。
public class Sample
{
// staticメソッド。
public static void main( String[] args )
{
// StaticClassを作ります。
StaticClass staticClass = new StaticClass();
// あとは普通に使えます。
staticClass.output();
// StaticClass#output()
// 非staticクラスは同じようには作れません。
// NonStaticClass nonStaticClass = new NonStaticClass();
// コンパイルエラー:
// 型 Sample のエンクロージング・インスタンスを持つ割り振りを明示的に指定する必要があります。(例 x.new A() で、x が Sample のインスタンス)
// 非staticメソッドからも使えます。
Sample sample = new Sample();
sample.useStaticClass();
}
/**
* StaticClassクラスを使うメソッド(非staticメソッド)。
*/
private void useStaticClass()
{
// StaticClassを作ります。
StaticClass staticClass = new StaticClass();
// あとは普通に使えます。
staticClass.output();
// StaticClass#output()
// ちなみに非staticメソッドからなら
// 非staticクラスも使えます。
NonStaticClass nonStaticClass = new NonStaticClass();
nonStaticClass.output();
// StaticClass#output()
}
/**
* staticクラス。
*/
static class StaticClass
{
public void output()
{
System.out.println( "StaticClass#output()" );
}
}
/**
* 非staticクラス。
*/
class NonStaticClass
{
public void output()
{
System.out.println( "StaticClass#output()" );
}
}
}
// グローバルなstaticクラスは作れません。
// static class StaticClass{}
// コンパイルエラー:
//クラス StaticClass の無許可の修飾子 ; public、abstract、および final のみ許可されています。
// Sample.java public class Sample { // staticメソッド。 public static void main( String[] args ) { // StaticClassを作ります。 StaticClass staticClass = new StaticClass(); // あとは普通に使えます。 staticClass.output(); // StaticClass#output() // 非staticクラスは同じようには作れません。 // NonStaticClass nonStaticClass = new NonStaticClass(); // コンパイルエラー: // 型 Sample のエンクロージング・インスタンスを持つ割り振りを明示的に指定する必要があります。(例 x.new A() で、x が Sample のインスタンス) // 非staticメソッドからも使えます。 Sample sample = new Sample(); sample.useStaticClass(); } /** * StaticClassクラスを使うメソッド(非staticメソッド)。 */ private void useStaticClass() { // StaticClassを作ります。 StaticClass staticClass = new StaticClass(); // あとは普通に使えます。 staticClass.output(); // StaticClass#output() // ちなみに非staticメソッドからなら // 非staticクラスも使えます。 NonStaticClass nonStaticClass = new NonStaticClass(); nonStaticClass.output(); // StaticClass#output() } /** * staticクラス。 */ static class StaticClass { public void output() { System.out.println( "StaticClass#output()" ); } } /** * 非staticクラス。 */ class NonStaticClass { public void output() { System.out.println( "StaticClass#output()" ); } } } // グローバルなstaticクラスは作れません。 // static class StaticClass{} // コンパイルエラー: //クラス StaticClass の無許可の修飾子 ; public、abstract、および final のみ許可されています。