1. クジラと牛
ここに動物学的に興味深い事実があります。牛は、たとえばカバよりもクジラにはるかに近いのです。牛とクジラは比較的近い親戚であることがわかりました。

ここを見て。OOPのもう 1 つの非常に強力なツールであるポリモーフィズムについて説明しましょう。4つの特徴があります。
2. 相続は万能薬ではない
Cow
ゲーム用のクラスを作成したと想像してください。多くのフィールドとメソッドがあります。このクラスのオブジェクトは、歩く、食べる、寝るなどのさまざまな動作を実行できます。牛も歩くときに鳴る鈴を付けています。クラス内のすべてを細部まで実装したとします。
そして、クライアントがやって来て、すべてのアクションが海で行われ、主人公がクジラである新しいゲーム レベルをリリースしたいと言いました。
クラスの設計を開始するWhale
と、それがクラスとわずかに異なるだけであることがわかりますCow
。両方のクラスのロジックは非常に似ているため、継承を使用することにします。

このCow
クラスは、親クラスの役割を担うのに理想的です。必要な変数とメソッドがすべて含まれています。私たちがしなければならないのは、クジラに泳ぐ能力を与えることだけです。しかし、問題があります。クジラには足、角、鐘が付いています。結局のところ、この機能はCow
クラス内に実装されています。ここで何ができるでしょうか?

3. メソッドのオーバーライド
メソッドのオーバーライドが役に立ちます。継承したメソッドが新しいクラスで期待どおりに動作しない場合は、そのメソッドを別のメソッドに置き換えることができます。

これはどのように行われるのでしょうか? 子孫クラスでは、オーバーライドする親クラスのメソッドと同じメソッドを宣言します。そこに新しいコードを書きます。それだけです。あたかも親クラスの古いメソッドが単に存在していないかのようです。
仕組みは次のとおりです。
コード | 説明 |
---|---|
|
|
|
このコードは、画面に次のテキストを表示します。
|
|
このコードにより、画面に次の内容が表示されます。
|
クラスを継承してメソッドCow
をオーバーライドするとprintName
、Whale
クラスには実際に次のデータとメソッドが含まれます。
|
私たちは古い方法については知りません。 |
GO TO FULL VERSION