ポリモーフィズム vs オーバーライド vs オーバーロード 質問する

ポリモーフィズム vs オーバーライド vs オーバーロード 質問する

Java に関して言えば、次のような質問が寄せられます。

ポリモーフィズムとは何ですか?

オーバーロードまたはオーバーライドは受け入れられる回答でしょうか?

それ以上の何かがあると思います。

実装のないメソッドを定義した抽象基本クラスがあり、そのメソッドをサブクラスで定義した場合、それはまだオーバーライドになりますか?

過負荷は確かに正しい答えではないと思います。

ベストアンサー1

ポリモーフィズムを表現する最も明確な方法は、抽象基本クラス(またはインターフェース)を使用することです。

public abstract class Human{
   ...
   public abstract void goPee();
}

このクラスは抽象クラスですgoPee()。メソッドが Humans に対して定義できないためです。サブクラス Male と Female に対してのみ定義可能です。また、Human は抽象概念です。男性でも女性でもない人間を作成することはできません。どちらか一方である必要があります。

そのため、抽象クラスを使用して実装を延期します。

public class Male extends Human{
...
    @Override
    public void goPee(){
        System.out.println("Stand Up");
    }
}

そして

public class Female extends Human{
...
    @Override
    public void goPee(){
        System.out.println("Sit Down");
    }
}

今なら部屋いっぱいの人間全員にトイレに行けと命令できる。

public static void main(String[] args){
    ArrayList<Human> group = new ArrayList<Human>();
    group.add(new Male());
    group.add(new Female());
    // ... add more...

    // tell the class to take a pee break
    for (Human person : group) person.goPee();
}

これを実行すると次のようになります:

Stand Up
Sit Down
...

おすすめ記事