C++设计一个动物类(Animal),再由此派生出猫类(Cat)和狗类(Dog),这些类中均有体重(weight)和发声(Speak)成员,不同动物发声时分别说出自已的动物类型和体重,使用类的继承性和多态性封装这些类,并编程测试设计的类。
时间: 2023-03-03 13:54:08 浏览: 104
我可以为您提供一个简单的示例:class Animal:
def __init__(self, weight, speak):
self.weight = weight
self.speak = speak
def speak_out(self):
print(f"I am a {self.speak} and I weigh {self.weight}kg")
class Cat(Animal):
def __init__(self, weight):
super().__init__(weight, 'Cat')
class Dog(Animal):
def __init__(self, weight):
super().__init__(weight, 'Dog')
cat1 = Cat(3)
cat1.speak_out() # I am a Cat and I weigh 3kg
dog1 = Dog(15)
dog1.speak_out() # I am a Dog and I weigh 15kg
相关问题
写一个C++程序:设计一个动物类(Animal),再由此派生出猫类(Cat)和狗类(Dog),这些类中均有体重(weight)和发声(Speak)成员,不同动物发声时分别说出自已的动物类型和体重,使用类的继承性和多态性封装这些类,并编程测试设计的类
#include <iostream>
using namespace std;// 动物类
class Animal {
public:
Animal(){}
// 动物体重
int weight;
// 发声
virtual void Speak(){
cout << "I am an animal." << endl;
}
};// 狗类
class Dog : public Animal {
public:
Dog(){};
void Speak(){
cout << "I am a dog, my weight is "
c++定义一个抽象类 Animal,包含抽象方法 void speak() 和 void move()定义三个派生类 Dog,Cat和 Fish,,分别重写void speak() 和 void move0函数定义一个函数 void doAction(Animal& animal)调用传入的动物的 speak0 和 move( 方法
好的。这是如何定义一个抽象类Animal,包含抽象方法void speak()和void move(),以及三个派生类Dog、Cat和Fish,分别重写void speak()和void move()函数,以及一个函数void doAction(Animal):
```
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void speak() = 0; // 抽象方法
virtual void move() = 0; // 抽象方法
};
class Dog : public Animal
{
public:
virtual void speak()
{
cout << "汪汪" << endl;
}
virtual void move()
{
cout << "跑" << endl;
}
};
class Cat : public Animal
{
public:
virtual void speak()
{
cout << "喵喵" << endl;
}
virtual void move()
{
cout << "跳" << endl;
}
};
class Fish : public Animal
{
public:
virtual void speak()
{
cout << "噼噼" << endl;
}
virtual void move()
{
cout << "游" << endl;
}
};
void doAction(Animal &a)
{
a.speak();
a.move();
}
int main()
{
Dog d;
Cat c;
Fish f;
doAction(d);
doAction(c);
doAction(f);
return 0;
}
```
这个程序的输出如下:
```
汪汪
跑
喵喵
跳
噼噼
游
```
阅读全文