現在Java Silverの勉強をしています。
メソッドをオーバーライドする際には、アクセス修飾子は元のメソッドと同じか緩く設定する必要がありますが、
メソッドをオーバーロードする際には、アクセス修飾子は自由に決めてしまっても良いものなのでしょうか?
java
1public interface Sample{ 2 void test(); 3} 4
java
1class SampleImpl implements Sample{ 2 @Override 3 public void test(){ //スーパークラスのメソッドより緩いアクセス修飾子でオーバーライド 4 System.out.println("SampleImpl"); 5 } 6}
java
1class SubSampleImpl extends SampleImpl{ 2 void test(int x){ //スーパークラスのメソッドより厳しいアクセス修飾子でオーバーロード 3 System.out.println("SubSampleImpl"); 4 } 5}
上記のコードの場合、問題なくコンパイル、実行できますが、
ここから、オーバーロードする場合は、元のメソッドのアクセス修飾子にかかわらず、アクセス修飾子は自由に決めてしまっても良いと理解して良いのでしょうか。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー