●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

オブジェクト指向の柔軟性!「多態性(Polymorphism)」とは?

Javaのオブジェクト指向における3つの柱は、継承・カプセル化・多態性です。
その中でも多態性(Polymorphism)は、1つのインターフェースで複数の実装を扱える柔軟な仕組みです。

多態性とは?

多態性(ポリモーフィズム)とは、同じメソッド名でありながら、呼び出す対象によって異なる動作をする性質のことです。
「同じメッセージ(メソッド呼び出し)に対して、異なるふるまいをする」ことができます。

多態性の具体例(継承 + オーバーライド)

class Animal {
    public void speak() {
        System.out.println("動物が鳴く");
    }
}

class Dog extends Animal {
    @Override
    public void speak() {
        System.out.println("ワンワン!");
    }
}

class Cat extends Animal {
    @Override
    public void speak() {
        System.out.println("ニャーニャー!");
    }
}
    

同じメソッドでも動作が変わる

public class Main {
    public static void main(String[] args) {
        Animal a1 = new Dog();  // Dog型のインスタンス
        Animal a2 = new Cat();  // Cat型のインスタンス

        a1.speak();  // → ワンワン!
        a2.speak();  // → ニャーニャー!
    }
}
    

ここでは Animal 型の変数でありながら、中身(実体)に応じたメソッドが実行されている点がポイントです。

多態性の種類

  • オーバーライドによる多態性:親クラスのメソッドを子クラスで上書き
  • インターフェースを使った多態性:異なるクラスで同じメソッドを定義

インターフェースを使った例

interface Shape {
    void draw();
}

class Circle implements Shape {
    public void draw() {
        System.out.println("円を描きます");
    }
}

class Square implements Shape {
    public void draw() {
        System.out.println("四角を描きます");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape s1 = new Circle();
        Shape s2 = new Square();

        s1.draw();  // → 円を描きます
        s2.draw();  // → 四角を描きます
    }
}
    

多態性のメリット

  • コードの柔軟性と再利用性が高まる
  • 拡張しやすいプログラム設計ができる
  • 異なるクラスの処理を共通の方法で扱える

まとめ

多態性(Polymorphism)は、Javaのオブジェクト指向を支える重要な概念で、1つの型で多様なふるまいを実現する仕組みです。
継承・インターフェース・オーバーライドを通じて、拡張性の高い柔軟なプログラム設計が可能になります。
「共通の型で扱って、ふるまいだけ切り替える」この感覚を意識して、実践に活かしてみましょう!