ジャン(斎藤末広)ブログ 

日常の話題は,facebook に書き込みしてます。

オーバーライドの間違い

本日のメルマガ「宿題メール」から

オーバーライドの間違い

 オブジェクト指向プログラミングにおける,多相性を実現するためのオーバーライド の説明はどれか。

   ア オブジェクト内の詳細な仕様や構造を外部から隠蔽すること

 イ スーパークラスで定義されたメソッドをサブクラスで再定義すること

 ウ 同一クラス内に,メソッド名が同一で,引数の型,個数,並び順が異なる複数のメソッドを定義すること

 エ 複数のクラスの共通する性質をまとめて,抽象化したクラスを作ること

■キーワード■  

■解答■

  基本情報技術者午前平成29年秋問07

   イ スーパークラスで定義されたメソッドをサブクラスで再定義すること

 

 > オーバーライド
> 【英】override
> オーバーライドとは、スーパクラスから継承されたサブクラスにおいて、メンバ関数を独自の機能で上書きすることである。オーバーライドは、オブジェクト指向における多態性(多様性、ポリモーフィズム)の例 である。なお、オーバーライドを可能にするには、引数の型、および、引数の数が同じでなければならない。ちなみに、類似の用語にオーバーロードがあるが、これは同一クラス内で引数の内容が違うものであり、オーバーライドとは異なるものである。
>https://www.weblio.jp/content/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%89

   どうもありがとうございます。

 > オーバーライドを可能にするには、引数の型、および、引数の数が同じでなければならない。

  は,間違いです。これは,Java の例です。他の言語では違う場合があります。Python では,名前がいっしょなら,オーバーライドします。   なお,解答の

> イ スーパークラスで定義されたメソッドをサブクラスで再定義すること

も,正確にいうと間違いです。再定義ではなく,再実装です。定義は,親クラスのものをそのまま使います。そうしないと,オーバーライドとはいいいません。