#include #include // 基类(父类) class Animal { public: // 虚函数,用于实现多态 virtual void makeSound() { std::cout << "Some generic animal sound" << std::endl; } // 公共方法 void eat() { std::cout << "Eating..." << std::endl; } }; // 派生类(子类) class Dog : public Animal { private: std::string name; int age; public: // 构造函数 Dog(std::string n, int a) : name(n), age(a) {} // 重载虚函数,实现多态 void makeSound() override { std::cout << "Woof!" << std::endl; } // 设置名字(封装) void setName(std::string n) { name = n; } // 获取名字(封装) std::string getName() { return name; } // 设置年龄(封装) void setAge(int a) { age = a; } // 获取年龄(封装) int getAge() { return age; } }; // 另一个派生类(子类) class Cat : public Animal { public: // 重载虚函数,实现多态 void makeSound() override { std::cout << "Meow!" << std::endl; } }; int main() { // 创建Dog对象 Dog myDog("Buddy", 3); myDog.eat(); // 输出: Eating... myDog.makeSound(); // 输出: Woof! // 使用封装方法设置和获取属性 myDog.setName("Max"); std::cout << "Dog's name: " << myDog.getName() << std::endl; // 输出: Dog's name: Max myDog.setAge(4); std::cout << "Dog's age: " << myDog.getAge() << std::endl; // 输出: Dog's age: 4 // 创建Cat对象 Cat myCat; myCat.eat(); // 输出: Eating... myCat.makeSound(); // 输出: Meow! // 多态演示 Animal* animals[2]; animals[0] = &myDog; animals[1] = &myCat; for (int i = 0; i < 2; i++) { animals[i]->makeSound(); // 输出: Woof! 和 Meow! } return 0; }