サブクラスがインスタンスメソッドをオーバーライドした時、スーパークラスのバージョンのメソッドは失われていない。super演算子を使うことで、サブクラスのインスタンスからアクセスできるようになっている。
publiic class Rectangle { protected var w = 0; protected var h = 0; public function setSize (newW, newH) { w = newW; h = newH; } } public class Square extends Rectangle { override public function setSize (newW, newH) { if (newW == newH) { // スーパークラスのsetSize()をサブクラスから呼び出し super.setSize(newW, newH); } } }
オーバーライドによって、スーパークラスのメソッドの振る舞いを無効化することもできる。サブクラスで、親クラスのメソッドをオーバーライドした上で、オーバーライドメソッドの中身を空にしておけばよい。
今日の進捗:2787→2810/20168
<余談>
PHPでサブクラスからスーパークラスのメソッドを呼び出す際は、parentキーワードを使う。上記コード例なら、parent::setSize()となる。