ローカルクラス
日本語 | 局所種類 |
英語 | local class |
ふりがな | ろーかるくらす |
フリガナ | ローカルクラス |
メソッド内クラス。
クラスは実は、メソッド内で宣言・定義することができる。これを「ローカルクラス」と言う。
ローカルクラスはローカル変数と同様のスコープを持ち、ブロックやメソッド内でのみ有効となる。
そのため、ローカルクラスはpublic、private、protected等のアクセス修飾子を付けることができない。クラスのスコープはローカル変数と同じ、と決められているためである。
一応内部クラスの一種。だが、内部クラスの特徴である「外部クラスのインスタンス内に内部クラスのインスタンスが含まれる」という仕組みは持っていない。
スコープがローカル変数と同じ、という点以外普通のクラスとほとんど変わらない、という特徴ではないような特徴を持つ。
ローカルクラスは、実際にはほとんど使用されない。
メソッド内にいきなりクラスが現れても戸惑うだけのため、使用は控えた方がいいだろう。
クラスは実は、メソッド内で宣言・定義することができる。これを「ローカルクラス」と言う。
ローカルクラスはローカル変数と同様のスコープを持ち、ブロックやメソッド内でのみ有効となる。
そのため、ローカルクラスはpublic、private、protected等のアクセス修飾子を付けることができない。クラスのスコープはローカル変数と同じ、と決められているためである。
一応内部クラスの一種。だが、内部クラスの特徴である「外部クラスのインスタンス内に内部クラスのインスタンスが含まれる」という仕組みは持っていない。
スコープがローカル変数と同じ、という点以外普通のクラスとほとんど変わらない、という特徴ではないような特徴を持つ。
ローカルクラスは、実際にはほとんど使用されない。
メソッド内にいきなりクラスが現れても戸惑うだけのため、使用は控えた方がいいだろう。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
{
// ローカルクラスを宣言します。
class LocalClass
{
// フィールド。
private int value = 100;
// メソッド。
public void output()
{
System.out.println( value );
}
}
// このローカルクラスを使用します。
LocalClass localClass = new LocalClass();
localClass.output();
// 100
}
// ローカルクラスはローカル変数と同様のスコープを持ちます。
// なので、ブロックの外では使用できません。
// LocalClass localClass;
// コンパイルエラー:
// LocalClass は解決できないか、型ではありません。
// ローカルクラスにアクセス修飾子は付けられません。
// public class PublicLocalClass{}
// コンパイルエラー:
// ローカル・クラス PublicLocalClass の無許可の修飾子 ; abstract または final のどちらか 1 つのみ許可されています。
}
}
public class Sample
{
public static void main( String[] args )
{
{
// ローカルクラスを宣言します。
class LocalClass
{
// フィールド。
private int value = 100;
// メソッド。
public void output()
{
System.out.println( value );
}
}
// このローカルクラスを使用します。
LocalClass localClass = new LocalClass();
localClass.output();
// 100
}
// ローカルクラスはローカル変数と同様のスコープを持ちます。
// なので、ブロックの外では使用できません。
// LocalClass localClass;
// コンパイルエラー:
// LocalClass は解決できないか、型ではありません。
// ローカルクラスにアクセス修飾子は付けられません。
// public class PublicLocalClass{}
// コンパイルエラー:
// ローカル・クラス PublicLocalClass の無許可の修飾子 ; abstract または final のどちらか 1 つのみ許可されています。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { { // ローカルクラスを宣言します。 class LocalClass { // フィールド。 private int value = 100; // メソッド。 public void output() { System.out.println( value ); } } // このローカルクラスを使用します。 LocalClass localClass = new LocalClass(); localClass.output(); // 100 } // ローカルクラスはローカル変数と同様のスコープを持ちます。 // なので、ブロックの外では使用できません。 // LocalClass localClass; // コンパイルエラー: // LocalClass は解決できないか、型ではありません。 // ローカルクラスにアクセス修飾子は付けられません。 // public class PublicLocalClass{} // コンパイルエラー: // ローカル・クラス PublicLocalClass の無許可の修飾子 ; abstract または final のどちらか 1 つのみ許可されています。 } }