0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ポリモーフィズムが理解できてなかったのでまとめ

Posted at

ポリモーフィズムは、異なるクラス(サブクラス)が共通のインターフェース(スーパークラスで定義されたメソッド)を持ちながら、それぞれ異なる振る舞いを実装することを指す。

例として、図形というスーパークラスがあり、四角形、円といったサブクラスがある場合を考える。これらのサブクラスは、図形クラスから継承され、面積を計算するという共通のメソッドを持つが、その計算方法はクラスによって異なる。

class 図形 {
    double 面積を計算する() {
        return 0;
    }
}

class 四角形 extends 図形 {
    double ;
    double 高さ;

    四角形(double , double 高さ) {
        this. = ;
        this.高さ = 高さ;
    }

    @Override
    double 面積を計算する() {
        return  * 高さ;
    }
}

class  extends 図形 {
    double 半径;

    (double 半径) {
        this.半径 = 半径;
    }

    @Override
    double 面積を計算する() {
        return 半径 * 半径 * Math.PI;
    }
}

この例では、四角形と円は、それぞれ異なるフィールド(幅、高さ、半径)を持ち、面積を計算するメソッドをオーバーライドして独自の計算を行う。しかし、どちらのクラスも図形クラスのサブクラスであるため、図形型の変数として扱うことができる。

図形() ある図形;

ある図形 = new 四角形(10, 5);
System.out.println("四角形の面積: " + ある図形.面積を計算する());

ある図形 = new (7);
System.out.println("円の面積: " + ある図形.面積を計算する());

このように、ポリモーフィズムを使用することで、異なる型のオブジェクトを同一のインターフェース(この場合は面積を計算するメソッド)を通じて操作することができる。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?