What's polymorphism

 什麼是多型

多型(Polymorphism)是一種面向對象程式設計(OOP)的特性,它允許使用相同的介面來處理不同類型的對象,並使得程式碼更具靈活性和可擴展性。多型主要有兩種形式:編譯時多型(Compile-time Polymorphism)和運行時多型(Runtime Polymorphism)。


以下是一個使用C++的多型的簡單例子,展示了運行時多型(基於虛擬函數的多型):


#include <iostream>
// 基底類別
class Animal {
public:
// 虛擬函數
virtual void makeSound() const {
std::cout << "Animal makes a sound." << std::endl;
}
};
// 衍生類別 1
class Dog : public Animal {
public:
// 覆寫虛擬函數
void makeSound() const override {
std::cout << "Dog barks." << std::endl;
}
};
// 衍生類別 2
class Cat : public Animal {
public:
// 覆寫虛擬函數
void makeSound() const override {
std::cout << "Cat meows." << std::endl;
}
};
// 函數使用基底類別的指針,實現多型
void animalSound(const Animal* animal) {
animal->makeSound();
}
int main() {
// 使用多型
Animal* dog = new Dog();
Animal* cat = new Cat();
animalSound(dog); // Dog barks.
animalSound(cat); // Cat meows.
delete dog;
delete cat;
return 0;
}

在這個例子中,`Animal` 是基底類別,`Dog` 和 `Cat` 是 `Animal` 的兩個衍生類別。`makeSound` 是一個虛擬函數,允許在衍生類別中覆寫。在 `main` 函數中,通過基底類別的指針,我們創建了 `Dog` 和 `Cat` 的實例,然後使用 `animalSound` 函數進行多型呼叫,最終實現了不同對象的不同行為。這就是運行時多型的例子。

Comments

Popular posts from this blog

Format date as yyyy-mm-dd using vbscript

How to write data into a excel file using vbscript