在C++中,封裝、繼承和多態是面向對象編程的三大特性。封裝是指將數據和操作數據的方法封裝在一起,提供對外界的接口;繼承是指一個類可以繼承另一個類的屬性和方法;多態是指同一種操作作用于不同的對象時可以產生不同的行為。
在C++中,繼承和多態是通過類和對象實現的。一個類可以派生出另一個類,被派生的類稱為子類,派生出子類的類稱為父類。子類可以繼承父類的屬性和方法,并且可以重寫父類的方法,實現多態。
例如,有一個父類Animal和它的子類Dog和Cat,可以這樣定義:
class Animal {
public:
virtual void speak() {
cout << "Animal speaks!" << endl;
}
};
class Dog : public Animal {
public:
void speak() override {
cout << "Dog barks!" << endl;
}
};
class Cat : public Animal {
public:
void speak() override {
cout << "Cat meows!" << endl;
}
};
在這個例子中,Animal類是父類,它有一個虛函數speak(),用于輸出動物的叫聲。Dog和Cat類是Animal類的子類,它們分別重寫了speak()函數,實現了多態。當調用Dog和Cat對象的speak()函數時,會輸出不同的結果。
另外,C++中還可以使用基類的指針或引用指向派生類的對象,實現對象的多態行為。例如:
Animal* dog = new Dog();
Animal* cat = new Cat();
dog->speak(); // 輸出Dog barks!
cat->speak(); // 輸出Cat meows!
通過這種方式,可以實現基類指針或引用指向不同子類對象時,調用相同的方法會產生不同的行為,實現多態。這就是C++中封裝的繼承和多態的實現方式。