メソッドのオーバーライド
- サブクラスはスーパークラスから継承したメソッド+独自のメソッドを持つ事が可能。
- サブクラスがスーパークラスのメソッドと同じシグネチャ(同じ名前や、引数タイプ)のメソッドを同じリターンタイプで定義していると、サブクラスのオブジェクトから呼ぶときスーパークラスではなく、サブクラスのメソッドが呼ばれる。
- sample public class OldOne{ public int Compute(int a,int b,String s){ ・・・ return ・・・; } } public class NewOne extends OldOne{ public int Compute(int p,int q,String k){ ・・・ // OldOneのComputeメソッドとは違う処理 return ・・・; } } // 呼び出し元 NewOne no = new NewOne(); int w = no.Compute(111,-5,"test message"); // NewOneクラスのメソッドが呼ばれる!
上記のように、スーパークラスのメソッドと同じシグネチャ、同じリターンタイプのメソッドを違う処理内容でサブクラスの中で定義することを「メソッドをオーバーライド(override)」すると言う。
なんでこんなことできるかというと、たいていスーパークラスにはやりたい事が実装されています。が!!!しかし。たまには各アプリケーションでちょっとだけ違う処理をしたい!なんて場合が多々あるわけで、そうすると一部機能だけを定義しなおす(=overrideする)だけで実装できるようになるこの機能はすばらしいわけです。