定义一个基类动物类(animal),并定义三个子类:猫类(cat),狗类(dog),羊类(sheep)。要求:(1)都有一个共同的字段属性(m_name):用于记录动物的名称;(2)都有一个相同的方法
时间: 2023-05-31 22:19:29 浏览: 1089
### 回答1:
:eat(),表示动物进食。
class Animal:
def __init__(self, name):
self.m_name = name
def eat(self):
print(self.m_name + "正在进食")
class Cat(Animal):
def __init__(self, name):
super().__init__(name)
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
class Sheep(Animal):
def __init__(self, name):
super().__init__(name)
cat = Cat("小猫")
dog = Dog("小狗")
sheep = Sheep("小羊")
cat.eat()
dog.eat()
sheep.eat()
### 回答2:
动物类作为基类,是猫类、狗类和羊类的父类,可以在基类上定义共同的属性和方法。这样做可以简化子类的定义,提高代码的重用性。
首先定义基类动物类(animal):
```python
class Animal:
def __init__(self, name):
self.m_name = name
def say_hello(self):
print(f"{self.m_name} is saying hello!")
```
这里定义了一个构造函数(__init__)来初始化动物的名称属性m_name,同时定义了一个say_hello方法,用于打印动物的问候语。
接下来定义三个子类:猫类(Cat),狗类(Dog),羊类(Sheep):
```python
class Cat(Animal):
def __init__(self, name):
super().__init__(name)
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
class Sheep(Animal):
def __init__(self, name):
super().__init__(name)
```
这里使用super()函数来获取父类Animal的构造函数,并且传入名称name。因为这三个子类都继承了Animal类,所以它们都具有属性m_name和方法say_hello。
测试一下我们的代码:
```python
cat = Cat("Missy")
dog = Dog("Buddy")
sheep = Sheep("Dolly")
cat.say_hello()
dog.say_hello()
sheep.say_hello()
```
输出如下:
```
Missy is saying hello!
Buddy is saying hello!
Dolly is saying hello!
```
可以看到,猫、狗和羊都打印了相同的问候语。因此,我们已经成功定义了一个基类动物类和三个子类猫类、狗类和羊类。这些子类自动继承了基类的属性和方法,而且它们的定义非常简单。如果需要新增动物子类,只需要继承基类Animal即可。此外,如果需要在子类中添加特定的属性或方法,也可以在子类中覆盖父类的属性或方法。
### 回答3:
动物类是一个基类,对于猫类、狗类和羊类都有一些公共的属性和方法。我们可以定义一个动物类(Animal),该类包含一个共同的字段属性(m_name),用于记录动物的名称。我们还可以定义一个方法,所有的子类都继承这个方法,以保持代码的一致性和可读性。具体的实现如下:
动物类(Animal):
class Animal:
def __init__(self, name):
self.m_name = name
def speak(self):
pass
def set_name(self, name):
self.m_name = name
def get_name(self):
return self.m_name
子类:猫类(Cat)、狗类(Dog)、羊类(Sheep):
class Cat(Animal):
def speak(self):
return "喵喵喵"
class Dog(Animal):
def speak(self):
return "汪汪汪"
class Sheep(Animal):
def speak(self):
return "咩咩咩"
在以上代码中,我们定义了一个动物类,它包含了一个名称属性和一个共同的方法(speak())。我们还定义了三个子类:猫类、狗类和羊类。这三个子类都继承了动物类的属性和方法,但是它们的“说话”方式是不同的。
这里需要注意的一个细节就是方法speak()必须在每一个子类中重新实现。因为每个动物的叫声是不同的,我们需要具体地实现每一个子类的叫声,以区分不同的动物。在以上代码中,我们使用了Python中的“多态”特性,使得每个对象都能够调用相同名称的方法,但它们的实现是不相同的。
如果我们需要在程序中添加新的动物类型,我们只需要定义一个新的子类并重写speak()方法即可。这是一个非常灵活的策略,可以大大减少代码的冗余和复杂性。