アイツにだけは負けたくない。
コンパイルエラーにならないインナークラス
最終更新:
yu_cyo
-
view
- 「//ここに記述」の部分に記述してコンパイルエラーにならないのは?
■例文
class Outer {
private double val = 10;
void func() {
//ここに記述
}
}
■選択肢
- A
static class Inner {
static void method() {
val ++;
}
}
- B
abstract class Inner {
void method() {
val ++;
}
}
- C
abstract class Inner {
static void method() {
val ++;
}
}
- D
class Inner {
void method() {
val ++;
}
}
- E
final static class Inner {
void method() {
val ++;
}
}
■実行結果
- 鉄則
メソッド内に定義するローカルクラスには、アクセス修飾子や
staticを指定することはできない。
staticを指定することはできない。
また、ローカルクラス内には、static変数(static final除く)、
staticメソッド、staticクラスは宣言できない。
staticメソッド、staticクラスは宣言できない。
- Aの場合
YUH@computer /cygdrive/c/java/pbm
$ javac Outer.java
Outer.java:7: 式の開始が不正です。
static class Inner {
^
Outer.java:7: ';' がありません。
static class Inner {
^
エラー 2 個
- Bの場合
YUH@computer /cygdrive/c/java/pbm $ javac Outer.java YUH@computer /cygdrive/c/java/pbm
- Cの場合
YUH@computer /cygdrive/c/java/pbm
$ javac Outer.java
Outer.java:9: static でない 変数 val を static コンテキストから
参照することはできません。
val ++;
^
Outer.java:8: 内部クラスが static 宣言を持つことはできません。
static void method() {
^
エラー 2 個
- Dの場合
YUH@computer /cygdrive/c/java/pbm $ javac Outer.java YUH@computer /cygdrive/c/java/pbm
- Eの場合
YUH@computer /cygdrive/c/java/pbm
$ javac Outer.java
Outer.java:7: 修飾子 static をここで使うことはできません。
final static class Inner {
^
エラー 1 個