クラスのスコープ
Javaではクラスのスコープもprivate,
クラスの宣言では主にpublicを使用する場合が多いです。
フレームワークやライブラリを作成する場面ではpackage privateを使用することがときどきあります。ライブラリの利用者に知らせたくないクラスをpackage privateとすることで,
privateは,
protectedは,
- 注1)
- 本誌Vol.
22の特集1 「サルでもわかる 逆引きデザインパターン」 をご覧ください。この特集はWebでも公開されています。
インナークラス
インナークラスとは,
なお,
リスト8 インアークラス
public class LoginWindow extends Window {
private int count = 0;
...
public void init() {
closeButton.addSelectionListener(new CloseButtonSelectionListener());
}
...
// インナークラスの宣言
private class CloseButtonSelectionListener extends SelectionAdapter {
@Override
public void widgetSelected(SelectionEvent event) {
// 外側のクラスのフィールドにアクセス可能...
System.out.println(count);
}
}
}
無名クラス
無名クラスは匿名クラスとも呼ばれます。無名クラスとは,
無名クラスはそもそも名前が付かないため,
Javaの無名クラスのメソッドでは,
RubyのブロックやJavaScriptの無名関数なども,
リスト9 無名クラス
public class LoginWindow extends Window {
private int count = 0;
...
public void init() {
final int result = 10;
...
// 無名クラスの宣言と利用
closeButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
// 外側のクラスのフィールドにアクセス可能...
System.out.println(count);
// final宣言されたローカル変数にアクセス可能
System.out.println(result);
}
});
}
...
}
Rubyのブロック
TkButton.new {
text "Close"
command { ... }
}
JavaScriptの無名関数
document.getElementById("closeButton").onclick =
function(event) {
...
};