質問するログイン新規登録

質問編集履歴

4

全体的に構成がおかしかったので少し修正

2026/03/27 12:46

投稿

ChocoKorone
ChocoKorone

スコア15

title CHANGED
File without changes
body CHANGED
@@ -4,16 +4,15 @@
4
4
  ~~ちなみに解説を見ると「トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。」と書かれています。~~
5
5
 
6
6
  解説について昨日は省略していましたが、全文は以下です。
7
- ### 解説
8
- クラスに指定できる修飾子についての問題です。
7
+ クラスに指定できる修飾子についての問題です。
9
8
  トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。
10
9
  またprivateやstaticはトップレベルのクラスには指定できない為、選択肢B、Dは間違いです。
11
10
  選択肢C、Eについてサブクラスによる継承を禁止するクラスにはfinal、抽象クラスにはabstractを指定する為どちらもクラスに指定可能な修飾子です。
12
11
  ただし、選択肢Fのようにabstractとfinalを両方指定することはできません。
13
12
  2行目ではシールクラスを宣言しています。permitsによる継承先の限定はありませんが、同一ファイル内でサブクラスを宣言する場合は、シールクラスの継承が必要です。サブクラスにはnon-sealed、sealed、finalのいずれかを指定するため、選択肢Hは正しい記述です。
14
- 選択肢Gはシールクラスを宣言していますが、継承を禁止とするfinalが指定されているため間違いです。
13
+ 選択肢Gはシールクラスを宣言していますが、継承を禁止とするfinalが指定されているため間違いです。
15
14
 
16
- ### 問題9
15
+ ### 問題
17
16
  次のプログラムがあります。
18
17
 
19
18
  ```java

3

補足情報、誤記の修正など

2026/03/25 12:32

投稿

ChocoKorone
ChocoKorone

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,22 @@
1
1
  [Java17の紫本](https://www.shoeisha.co.jp/book/detail/9784798186191)の模擬試験にて以下のような問題があります。
2
2
  正解はACEHだそうなのですが、解説を見ても何故なのか全く分かりません。これは誤植?なのでしょうか?それとも自分の認識が間違っているのでしょうか
3
3
 
4
- ちなみに解説を見ると「トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。」と書かれています。
4
+ ~~ちなみに解説を見ると「トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。」と書かれています。~~
5
5
 
6
+ 解説について昨日は省略していましたが、全文は以下です。
7
+ ### 解説
8
+ クラスに指定できる修飾子についての問題です。
9
+ トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。
10
+ またprivateやstaticはトップレベルのクラスには指定できない為、選択肢B、Dは間違いです。
11
+ 選択肢C、Eについてサブクラスによる継承を禁止するクラスにはfinal、抽象クラスにはabstractを指定する為どちらもクラスに指定可能な修飾子です。
12
+ ただし、選択肢Fのようにabstractとfinalを両方指定することはできません。
13
+ 2行目ではシールクラスを宣言しています。permitsによる継承先の限定はありませんが、同一ファイル内でサブクラスを宣言する場合は、シールクラスの継承が必要です。サブクラスにはnon-sealed、sealed、finalのいずれかを指定するため、選択肢Hは正しい記述です。
14
+ 選択肢Gはシールクラスを宣言していますが、継承を禁止とするfinalが指定されているため間違いです。
15
+
6
- 問題9
16
+ ### 問題9
7
17
  次のプログラムがあります。
8
18
 
9
- ```Base.java
19
+ ```java
10
20
  sealed class Base {}
11
21
  //insert code here
12
22
  ```
@@ -18,4 +28,29 @@
18
28
  E. abstract class Derived{}
19
29
  F. abstract final class Derived{}
20
30
  G. sealed final class Derived{}
21
- H. non-sealed final class Derived{}
31
+ H. non-sealed class Derived **extends Base**{}
32
+
33
+ ### 3/25 補足
34
+ - 選択肢Hについて誤記がありましたので修正しました。
35
+ - Base.javaというのファイル名について、問題中ではjavaファイル名が明言されておらず、この本を買ったらダウンロードできるサンプルプログラムからファイル名からとっています。
36
+ - 解説を全文載せました。
37
+
38
+ - 正解とされる選択肢も実際に試行しましたが以下のようになりました。(java version "17.0.16" 2025-07-15 LTS)
39
+ - A
40
+ Base.javaだった場合:Derivedクラスがpublicであるため、ファイル名がおかしい(コンパイルエラー)、Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
41
+ Derived.javaだった場合:Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
42
+
43
+ - C
44
+ Base.javaだった場合:Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
45
+ Derived.javaだった場合:Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
46
+
47
+ - E
48
+ Base.javaだった場合:Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
49
+ Derived.javaだった場合:Baseクラスを継承しているクラスが一つもない(コンパイルエラー)
50
+
51
+ - H
52
+ Base.javaだった場合:コンパイル成功
53
+ Derived.javaだった場合:コンパイル成功
54
+
55
+ アドバイス通り、お問い合わせフォームに送ってみます。
56
+ 回答された方ありがとうございました。

2

より正しいタイトルへ変更

2026/03/24 11:35

投稿

ChocoKorone
ChocoKorone

スコア15

title CHANGED
@@ -1,1 +1,1 @@
1
- javaトップレベルクラスについて
1
+ java17紫本の模擬試験の誤植?について
body CHANGED
File without changes

1

回答の解説を追記

2026/03/24 11:26

投稿

ChocoKorone
ChocoKorone

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,12 @@
1
1
  [Java17の紫本](https://www.shoeisha.co.jp/book/detail/9784798186191)の模擬試験にて以下のような問題があります。
2
- 正解はACEHだそうなのですが、解説を見ても何故なのか全く分かりません。これは誤植?なのでしょうか?
2
+ 正解はACEHだそうなのですが、解説を見ても何故なのか全く分かりません。これは誤植?なのでしょうか?それとも自分の認識が間違っているのでしょうか
3
3
 
4
+ ちなみに解説を見ると「トップレベルのクラスに指定できるアクセス修飾子はpublicか省略の形であり、選択肢Aは適切な宣言です。」と書かれています。
5
+
4
6
  問題9
5
7
  次のプログラムがあります。
6
8
 
7
- ```java
9
+ ```Base.java
8
10
  sealed class Base {}
9
11
  //insert code here
10
12
  ```