本日のメルマガ「宿題メール」から
オーバーライドの間違い
オブジェクト指向プログラミングにおける,多相性を実現するためのオーバーライド の説明はどれか。
ア オブジェクト内の詳細な仕様や構造を外部から隠蔽すること
イ スーパークラスで定義されたメソッドをサブクラスで再定義すること
ウ 同一クラス内に,メソッド名が同一で,引数の型,個数,並び順が異なる複数のメソッドを定義すること
エ 複数のクラスの共通する性質をまとめて,抽象化したクラスを作ること
■キーワード■
■解答■
基本情報技術者午前平成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 では,名前がいっしょなら,オーバーライドします。 なお,解答の
> イ スーパークラスで定義されたメソッドをサブクラスで再定義すること
も,正確にいうと間違いです。再定義ではなく,再実装です。定義は,親クラスのものをそのまま使います。そうしないと,オーバーライドとはいいいません。