在C++中,封裝、繼承和多態(tài)是面向?qū)ο缶幊痰娜筇匦?。封裝是指將數(shù)據(jù)和操作數(shù)據(jù)的方法封裝在一起,提供對外界的接口;繼承是指一個類可以繼承另一個類的屬性和方法;多態(tài)是指同一種操作作用于不同的對象時可以產(chǎn)生不同的行為。
在C++中,繼承和多態(tài)是通過類和對象實現(xiàn)的。一個類可以派生出另一個類,被派生的類稱為子類,派生出子類的類稱為父類。子類可以繼承父類的屬性和方法,并且可以重寫父類的方法,實現(xiàn)多態(tài)。
例如,有一個父類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類是父類,它有一個虛函數(shù)speak(),用于輸出動物的叫聲。Dog和Cat類是Animal類的子類,它們分別重寫了speak()函數(shù),實現(xiàn)了多態(tài)。當調(diào)用Dog和Cat對象的speak()函數(shù)時,會輸出不同的結(jié)果。
另外,C++中還可以使用基類的指針或引用指向派生類的對象,實現(xiàn)對象的多態(tài)行為。例如:
Animal* dog = new Dog();
Animal* cat = new Cat();
dog->speak(); // 輸出Dog barks!
cat->speak(); // 輸出Cat meows!
通過這種方式,可以實現(xiàn)基類指針或引用指向不同子類對象時,調(diào)用相同的方法會產(chǎn)生不同的行為,實現(xiàn)多態(tài)。這就是C++中封裝的繼承和多態(tài)的實現(xiàn)方式。