#include <iostream>
#include <string>
class Flyable {
public:
virtual void fly() const {
std::cout << "Flying..." << std::endl;
}
};
class Swimmable {
public:
virtual void swim() const {
std::cout << "Swimming..." << std::endl;
}
};
class Duck : public Flyable, public Swimmable {
private:
std::string name;
public:
Duck(const std::string& n) : name(n) {}
void introduce() const {
std::cout << "I'm " << name << " the duck." << std::endl;
}
// Optionally override inherited methods
void fly() const override {
std::cout << name << " is flying." << std::endl;
}
void swim() const override {
std::cout << name << " is swimming." << std::endl;
}
};
int main() {
Duck duck("Donald");
duck.introduce();
duck.fly();
duck.swim();
return 0;
}