今日のトピックは「ポリモーフィズムの実例」です。ポリモーフィズム(多態性)は、オブジェクト指向プログラミングにおける重要な概念で、同じメソッド名でも異なるクラスで異なる振る舞いを持つことができます。これにより、コードの柔軟性と再利用性が大幅に向上します。
目次
基本概念の説明
ポリモーフィズム (Polymorphism)
ポリモーフィズム (Polymorphism): ポリモーフィズムは、同じメソッド名が異なるクラスで異なる動作をすることを指します。これは、親クラスやインターフェースのメソッドを、異なるクラスでオーバーライドすることで実現されます。ポリモーフィズムにより、異なるクラスのオブジェクトを同じ型として扱うことができ、コードの一般性や拡張性が向上します。
各言語でのサンプルコード
Python
class Animal:
def sound(self):
return "Some sound"
class Dog(Animal):
def sound(self):
return "Woof"
class Cat(Animal):
def sound(self):
return "Meow"
# ポリモーフィズムの例
animals = [Dog(), Cat()]
for animal in animals:
print(animal.sound())
C#
class Animal {
public virtual string Sound() {
return "Some sound";
}
}
class Dog : Animal {
public override string Sound() {
return "Woof";
}
}
class Cat : Animal {
public override string Sound() {
return "Meow";
}
}
// ポリモーフィズムの例
Animal[] animals = { new Dog(), new Cat() };
foreach (Animal animal in animals) {
Console.WriteLine(animal.Sound());
}
C++
class Animal {
public:
virtual std::string Sound() const {
return "Some sound";
}
};
class Dog : public Animal {
public:
std::string Sound() const override {
return "Woof";
}
};
class Cat : public Animal {
public:
std::string Sound() const override {
return "Meow";
}
};
// ポリモーフィズムの例
Animal* animals[] = { new Dog(), new Cat() };
for (Animal* animal : animals) {
std::cout << animal->Sound() << std::endl;
}
Java
class Animal {
String sound() {
return "Some sound";
}
}
class Dog extends Animal {
@Override
String sound() {
return "Woof";
}
}
class Cat extends Animal {
@Override
String sound() {
return "Meow";
}
}
// ポリモーフィズムの例
Animal[] animals = { new Dog(), new Cat() };
for (Animal animal : animals) {
System.out.println(animal.sound());
}
JavaScript
class Animal {
sound() {
return "Some sound";
}
}
class Dog extends Animal {
sound() {
return "Woof";
}
}
class Cat extends Animal {
sound() {
return "Meow";
}
}
// ポリモーフィズムの例
const animals = [new Dog(), new Cat()];
animals.forEach(animal => console.log(animal.sound()));
各言語の解説
言語 | ポリモーフィズムの実装方法 | 特徴 |
---|---|---|
Python | メソッドのオーバーライド | 柔軟でシンプルな多態性の実現が可能 |
C# | override キーワードを使用 | 型安全で強力なオブジェクト指向機能 |
C++ | 仮想メソッドを使用 | 高速で柔軟だが、明示的な実装が必要 |
Java | @Override アノテーションを使用 | 強力なオブジェクト指向機能 |
JavaScript | メソッドのオーバーライド | 柔軟でフロントエンドに強い |
まとめ
ポリモーフィズムは、異なるクラスで同じメソッド名を使って異なる動作を実現するための重要な技術です。これにより、コードの柔軟性が高まり、変更に強い設計が可能になります。次回は「クラスとインスタンスの関係」について学習しましょう。
コメント