質問編集履歴

2

一部修正しました。

2020/10/24 10:06

投稿

karakorum
karakorum

スコア20

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  public static void main(String args[]){
34
34
 
35
- SampleAb Ab=new Exp();
35
+ SampleAb Ab=new Sample();
36
36
 
37
37
  Ab.method();
38
38
 

1

抽象クラスの抽象メソッドのアクセス修飾子をprotectedにした時のソースコードを追記しました。

2020/10/24 10:06

投稿

karakorum
karakorum

スコア20

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,63 @@
13
13
  「そもそも、そういうものだから」と言われればそれまでですが、何らかの理由でpublicのみを許しているはずなので、そのあたりの理由はご存じの方がいらっしゃったら、ご回答いただきたいです。
14
14
 
15
15
  宜しくお願い致します。
16
+
17
+
18
+
19
+
20
+
21
+ ###追記① 抽象クラスの抽象メソッドのアクセス修飾子をprotectedに。
22
+
23
+ ```
24
+
25
+ package sample;
26
+
27
+ import test.SampleAb;
28
+
29
+
30
+
31
+ public class Sample extends SampleAb{
32
+
33
+ public static void main(String args[]){
34
+
35
+ SampleAb Ab=new Exp();
36
+
37
+ Ab.method();
38
+
39
+ }
40
+
41
+ public void method() {
42
+
43
+ System.out.println("抽象メソッドをオーバーライド");
44
+
45
+ }
46
+
47
+ }
48
+
49
+ ```
50
+
51
+ ```
52
+
53
+ package test;
54
+
55
+
56
+
57
+ public abstract class SampleAb{
58
+
59
+ protected abstract void method();
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ ➡このとき、Sampleクラスのmainメソッドの下記の部分でコンパイルエラーが起こります。
66
+
67
+ ```
68
+
69
+ Ab.method();
70
+
71
+
72
+
73
+ メソッド method() は型 SampleAb で不可視です
74
+
75
+ ```