メソッドにアクセス修飾子をつけることで、メソッドに対してアクセス制限を設けることが出来ます。
アクセス修飾子の種類とアクセス制限の意味は以下のとおりになります。
public・・・全てのクラスらアクセス可能
protected・・・同一パッケージと派生クラスからアクセス可能
修飾子なし・・・同一パッケージからアクセス可能
private・・・同一クラスからアクセス可能
アクセス修飾子は、修飾子なしも含めて全部で4種類になります。
アクセス制限の強さは
private > 修飾子なし > protected > public
となります。メソッドをオーバーライドする時、サブクラスのメソッドのアクセス修飾子は、スーパークラスのメソッドのアクセス修飾子よりも弱いか同一の修飾子でないとコンパイルエラーとなります。
//Test.java
public class Test {
protected void ToString() {
/*処理
・
・
・
*/
}
}
-----------------------------
//ChildOfTest.java
public class ChildOfTest extends Test{
private void ToString() {
/*処理
・
・
・
*/
}
}
-----------------------------
上記例は、スーパークラスTestのメソッドToStringをサブクラスChildOfTestでオーバーライドしています。
サブクラスのメソッドのアクセス修飾子のアクセス制限が、スーパークラスのメソッドのアクセス修飾子のアクセス制限よりも強いため、サブクラスはコンパイルエラーとなります。