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
...