ID非公開
ID非公開さん
2021/1/19 0:15
1回答
Javaに関する質問です。
Javaに関する質問です。 独学で学んでおり、今、extends, protectedなどに取り組んでいます。以下はあるコードの一部なのですが、エラーとなってしまいます。調べてみたところprotectedメソッドをBに入れることができない、ということは分かりましたが、下のコードのどこをどう直せば良いのか分かりませんでした。どこを直せば良いのでしょうか? また、abstract void b をクラスBで protected void bにすることは可能なのでしょうか? 他にも不味いところがあったら教えて頂きたいです。 abstract class A{ protected void a (){} abstract void b(); } class B extends A{ void a (){} protected void b(){} }
ベストアンサー
オーバーライドの参照範囲はprotectedあるいは無指定メソッドをpublic化することはできますが、それ以外の場合は元の参照範囲と同じにする必要があります。 今回のケースですと、class Aのメソッド a()は無名参照範囲となっていますので、class Bのメソッド a()は無名かpublicの参照範囲とする必要があります。 よって、class Bのメソッド a()をprotectedにしたいのであれば、class Aのメソッド a()もprotectedで宣言する必要があります。
ID非公開
ID非公開さん
質問者
2021/1/19 9:13
回答ありがとうございます! クラスAのメソッドa()はこの状態だとprotectedで宣言できていないということでしょうか??
質問者からのお礼コメント
ありがとうございました!
お礼日時:1/21 10:00