privateクラス
日本語 | 隠蔽クラス |
英語 | private class |
ふりがな | ぷらいべーとくらす |
フリガナ | プライベートクラス |
privateで修飾されたクラス。
「private class クラス名{ クラスの定義 }」のように、クラスの宣言の先頭にprivateが付けられたクラス。
内部クラスとして宣言する際に付ける事で、外部クラス及び内部クラスからのみ使用可能なクラスとなる。
外部クラスの内部処理専用であり、他のクラスでは使用して欲しくないクラスに使用する。
特定のクラスを「絶対に他のクラスにアクセスされたくない」場合に使用する。
ただし、多くの場合パッケージを利用することでほぼ同じアクセスコントロールが可能となる。
内部クラスは「クラスの中にクラス」が増えることになり、1ソースファイル内のプログラムが増大し、可読性やメンテナンス性が低下する。「1クラスにつき1ソースファイル」が理想と考えると多用は控えた方がいいだろう。
「private class クラス名{ クラスの定義 }」のように、クラスの宣言の先頭にprivateが付けられたクラス。
内部クラスとして宣言する際に付ける事で、外部クラス及び内部クラスからのみ使用可能なクラスとなる。
外部クラスの内部処理専用であり、他のクラスでは使用して欲しくないクラスに使用する。
特定のクラスを「絶対に他のクラスにアクセスされたくない」場合に使用する。
ただし、多くの場合パッケージを利用することでほぼ同じアクセスコントロールが可能となる。
内部クラスは「クラスの中にクラス」が増えることになり、1ソースファイル内のプログラムが増大し、可読性やメンテナンス性が低下する。「1クラスにつき1ソースファイル」が理想と考えると多用は控えた方がいいだろう。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
Sample sample = new Sample();
// Privateクラスを使用します。
PrivateClass privateClass = sample.new PrivateClass();
privateClass.output();
// PrivateClass#output()
}
/**
* privateクラス。
*/
private class PrivateClass
{
public void output()
{
System.out.println( "PrivateClass#output()" );
}
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* 自分のクラスを使うクラス。
*/
private void usePrivateClass()
{
// Privateクラスは使用できません。
// PrivateClass privateClass;
// コンパイルエラー:
// PrivateClass は解決できないか、型ではありません。
// Sample.PrivateClass privateClass;
// コンパイルエラー:
// 型 Sample.PrivateClass は不可視です。
}
}
/**
* グローバルなprivateクラスは作れません。
*/
// private class PrivateClassOnGlobal{}
// コンパイルエラー:
// クラス PrivateClassOnGlobal の無許可の修飾子 ; public、abstract、および final のみ許可されています。
public class Sample
{
public static void main( String[] args )
{
Sample sample = new Sample();
// Privateクラスを使用します。
PrivateClass privateClass = sample.new PrivateClass();
privateClass.output();
// PrivateClass#output()
}
/**
* privateクラス。
*/
private class PrivateClass
{
public void output()
{
System.out.println( "PrivateClass#output()" );
}
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* 自分のクラスを使うクラス。
*/
private void usePrivateClass()
{
// Privateクラスは使用できません。
// PrivateClass privateClass;
// コンパイルエラー:
// PrivateClass は解決できないか、型ではありません。
// Sample.PrivateClass privateClass;
// コンパイルエラー:
// 型 Sample.PrivateClass は不可視です。
}
}
/**
* グローバルなprivateクラスは作れません。
*/
// private class PrivateClassOnGlobal{}
// コンパイルエラー:
// クラス PrivateClassOnGlobal の無許可の修飾子 ; public、abstract、および final のみ許可されています。
// Sample.java public class Sample { public static void main( String[] args ) { Sample sample = new Sample(); // Privateクラスを使用します。 PrivateClass privateClass = sample.new PrivateClass(); privateClass.output(); // PrivateClass#output() } /** * privateクラス。 */ private class PrivateClass { public void output() { System.out.println( "PrivateClass#output()" ); } } } /** * フツーのクラス。 */ class NormalClass { /** * 自分のクラスを使うクラス。 */ private void usePrivateClass() { // Privateクラスは使用できません。 // PrivateClass privateClass; // コンパイルエラー: // PrivateClass は解決できないか、型ではありません。 // Sample.PrivateClass privateClass; // コンパイルエラー: // 型 Sample.PrivateClass は不可視です。 } } /** * グローバルなprivateクラスは作れません。 */ // private class PrivateClassOnGlobal{} // コンパイルエラー: // クラス PrivateClassOnGlobal の無許可の修飾子 ; public、abstract、および final のみ許可されています。