ポリモーフィズム(多態性)とは?オブジェクト指向プログラミングの基本概念をわかりやすく解説

Explanation of IT Terms

ポリモーフィズムとは?

ポリモーフィズム、または多態性とは、オブジェクト指向プログラミングの基本概念の一つで、同じメッセージを受け取った複数のオブジェクトが、それぞれ自分の方法で処理を行うことができるという性質を指します。言い換えると、同じ名前のメソッドでも、そのメソッドが属するクラスによって挙動が変わることができるということです。

この性質によって、プログラムが柔軟性を持ち、再利用性が高くなります。例えば、動物というクラスを作成し、その中にspeakというメソッドを定義したとします。その後、犬、猫、鴨というクラスを作成し、それぞれspeakメソッドを定義します。それぞれのクラスには独自の振る舞いが定義されているため、動物のインスタンスを使ってspeakメソッドを呼び出しても、犬は「わんわん」と鳴き、猫は「にゃーにゃー」と鳴き、鴨は「がぁがぁ」と鳴くといったように、それぞれのクラスに定義された振る舞いを行います。

ポリモーフィズムの種類

ポリモーフィズムには、以下の3種類があります。

1. オーバーロード

オーバーロードは、同じ名前のメソッドを複数定義し、引数の型や数などによって、どのメソッドが呼び出されるかを判断する方法です。例えば、以下のように定義することができます。

“`
class Calculator {
public int calculate(int num1, int num2) {
return num1 + num2;
}

public double calculate(double num1, double num2) {
return num1 + num2;
}
}
“`

int型の引数を受け取るcalculateメソッドと、double型の引数を受け取るcalculateメソッドが定義されています。このように、オーバーロードを利用することで、同じメソッド名で複数の処理を実行できます。

2. オーバーライド

オーバーライドは、親クラスで定義されたメソッドを子クラスで再定義し、子クラスで定義したメソッドを呼び出すことができるようにする方法です。例えば、以下のように定義することができます。

“`
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(“にゃーにゃー”);
}
}

class Duck extends Animal {
@Override
public void speak() {
System.out.println(“がぁがぁ”);
}
}
“`

このように、Animalクラスのspeakメソッドをオーバーライドし、犬、猫、鴨クラスそれぞれでspeakメソッドを定義しました。

3. インターフェースを実装したポリモーフィズム

インターフェースを実装したポリモーフィズムは、複数のクラスが同じインターフェースを実装している場合、そのインターフェースを受け取る変数に、異なるクラスのインスタンスを代入することができるという方法です。例えば、以下のように定義することができます。

“`
interface Shape {
void draw();
}

class Circle implements Shape {
@Override
public void draw() {
System.out.println(“円を描く”);
}
}

class Square implements Shape {
@Override
public void draw() {
System.out.println(“四角形を描く”);
}
}

class Painter {
public void drawShape(Shape shape) {
shape.draw();
}
}
“`

このように、Shapeというインターフェースを定義し、CircleクラスとSquareクラスで実装しています。そして、PainterというクラスにdrawShapeメソッドを定義し、Shapeを引数に受け取っています。drawShapeメソッドは、引数で受け取ったShapeのインスタンスに対して、drawメソッドを呼び出すことができます。このように、異なるクラスのインスタンスを同じインターフェースの変数に代入し、共通の方法で処理することが可能です。

まとめ

ポリモーフィズムは、オブジェクト指向プログラミングの基本概念の一つで、同じ名前のメソッドでも、異なるクラスで定義された場合、異なる振る舞いをすることができます。オーバーロード、オーバーライド、インターフェースを実装したポリモーフィズムの3種類があります。これらをうまく活用して、柔軟性の高いプログラムを作成することができます。

参考記事

参考サイト

合わせて読みたい

【Google Chrome】右クリックで翻訳がでなくなった時の対策方法の決定版