オーバライド オーバーライド override
スーパクラスのメソッドと同名のメソッドをサブクラスで定義すること。
このような場合、メソッドをオーバライドすると表現する。
メソッドのアクセス性
メソッドをオーバライドするにはきまりがあります。
『メソッドをオーバライドするときは、スーパークラスのメソッドと同様あるいはそれより弱いアクセス制限をもつ修飾子を与えなければならない。』
例えば、スーバクラスのメソッドmesodが以下のように宣言されていたら、
//スーパークラスのメソッド public void mesod()
そのサブクラスでオーバライドする際には、
//サブクラスのメソッド public void mesod()
というようにpublic宣言しなければなりません。
クラスメソッドはクラスメソッドとしてオーバライドする
スーパクラスで以下のようにクラスメソッドが宣言されている
//スーパクラス public static void mesod() { // ... }
このクラスメソッドをサブクラスでオーバライドする際には以下のようにstatic修飾子を付けてクラスメソッドとしてオーバライドする必要がある。
//サブクラス public static void mesod() { // ... }
static修飾子を付けずにインスタンスメソッドとしてオーバライドすると怒られます。
例えば、以下のようにオーバライドすると、
//サブクラス public void mesod() { // ... }
以下のエラーメッセージを受け取ります。
mesod() をオーバーライドできません。オーバーライドされたメソッドは static です