下面定义了鱼类Fish和鸟类Bird,并创建了两个对象animal1,animal2: class Fish: def __init__(self, species, color):
时间: 2024-10-21 08:09:39 浏览: 47
这是一个简单的面向对象编程示例,在Python中,我们定义了两个类`Fish`和`Bird`,它们分别代表鱼类和鸟类。`__init__`是一个特殊的方法,用于初始化新创建的对象。
```python
class Fish:
def __init__(self, species, color):
self.species = species
self.color = color
class Bird:
def __init__(self, name, feather_color):
self.name = name
self.feather_color = feather_color
# 创建对象
animal1 = Fish("金鱼", "红色")
animal2 = Bird("鹦鹉", "绿色")
# 这里体现了多态,虽然animal1和animal2都是动物,但它们的行为却不同
animal1.swim() # 对于Fish对象,调用swim方法
animal2.fly() # 对于Bird对象,调用fly方法
```
在这个例子中,`animal1`和`animal2`虽然都称为`animal`,但通过实例化它们各自的类,我们可以根据对象的具体类型调用相应的方法,这正是多态的一种体现。尽管`animal1`和`animal2`共享相同的属性名称,但它们的行为取决于实际的类类型。
相关问题
写一个类Animal,描述动物的属性和行为,通过继承Animal类定义 Bird类、Fish类,分别描述鸟类和鱼类的属性和行为,具体要求如下: (1)Animal类定义属性name、color、footNumber,描述动物的名 称、颜色、脚的只数;定义成员方法showInfo0,用于输出动物的属性信 息;定义成员方法move0,用于描述动物如何行走(输出“可以通过飞、 跑、游等方式移动身体”); (2)通过继承Animal定义Bird类,改写父类的move方法(输出“通 过飞来移动身体”),增加一个方法nest0用于描述在哪里筑巢; (3)通过继承Animal定义Fish类,改写父类的move方法(输出“通过 游来移动身体”),增加一个属性length,用于描述鱼的身长,改写父类 的showInfo0方法,除了输出name、color、footN_umber属性,还要输出鱼 的身长。0 (4)编写测试类,分别创建上述3个类的对象,并给对象的所有属性 赋值,调用对象的所有方法。
```python
class Animal:
def __init__(self, name, color, footNumber):
self.name = name
self.color = color
self.footNumber = footNumber
def showInfo(self):
print(f"名称:{self.name},颜色:{self.color},脚的只数:{self.footNumber}")
def move(self):
print("可以通过飞、跑、游等方式移动身体")
class Bird(Animal):
def move(self):
print("通过飞来移动身体")
def nest(self):
print("在树上筑巢")
class Fish(Animal):
def __init__(self, name, color, footNumber, length):
super().__init__(name, color, footNumber)
self.length = length
def showInfo(self):
super().showInfo()
print(f"身长:{self.length}")
def move(self):
print("通过游来移动身体")
#测试类
bird = Bird("麻雀", "灰色", 2)
bird.showInfo()
bird.move()
bird.nest()
fish = Fish("金鱼", "红色", 0, "10cm")
fish.showInfo()
fish.move()
animal = Animal("狗", "棕色", 4)
animal.showInfo()
animal.move()
```
输出结果:
```
名称:麻雀,颜色:灰色,脚的只数:2
通过飞来移动身体
在树上筑巢
名称:金鱼,颜色:红色,脚的只数:0
身长:10cm
通过游来移动身体
名称:狗,颜色:棕色,脚的只数:4
可以通过飞、跑、游等方式移动身体
```
编写一个类Animal,描述动物的属性和行为,通过继承Animal类定义Bird类、Fish类,分别描述鸟类 和鱼类的属性和行为,具体要求如下:(1)Animal类定义属性name、color、foot Nurnber,描述动物的名称、颜色、脚的只数;定义成员方法showInfo0,用于输出动物的属性信息;定义成员方法move0,用于描述动物如何行走(输出“可以通过飞、跑、游等方式移动身体〞;(2)通过继承Animal定义Bird类,改写 父类的move方法(输出“通过飞来移动身体”),增加一个方法nest0用于描述在哪里筑巢;(3)通过继承 Animal定义Fis类,改写父类的move方法(输出"通过游来移动身体”,增加一个属性length,用于描述 鱼的身长,改写父类的shorolnfo0方法,除了输出 narme、color、foot Number属性,还要输出鱼的身长;(4)编写测试类,分别创建上述3个类的对象,并给对象的所有属性赋值,调用对象的所有方法。
下面是对应的代码实现:
```python
class Animal:
def __init__(self, name, color, foot_number):
self.name = name
self.color = color
self.foot_number = foot_number
def show_info(self):
print(f"Name: {self.name}\nColor: {self.color}\nFoot Number: {self.foot_number}")
def move(self):
print("Can move by flying, running, swimming, etc.")
class Bird(Animal):
def __init__(self, name, color, foot_number):
super().__init__(name, color, foot_number)
def move(self):
print("Can move by flying.")
def nest(self, place):
print(f"{self.name} builds nest on {place}")
class Fish(Animal):
def __init__(self, name, color, foot_number, length):
super().__init__(name, color, foot_number)
self.length = length
def show_info(self):
super().show_info()
print(f"Length: {self.length}")
def move(self):
print("Can move by swimming.")
# Testing
bird = Bird("Sparrow", "Brown", 2)
bird.show_info()
bird.move()
bird.nest("Tree")
fish = Fish("Salmon", "Pink", 0, 20)
fish.show_info()
fish.move()
animal = Animal("Tiger", "Orange", 4)
animal.show_info()
animal.move()
```
输出结果:
```
Name: Sparrow
Color: Brown
Foot Number: 2
Can move by flying.
Sparrow builds nest on Tree
Name: Salmon
Color: Pink
Foot Number: 0
Length: 20
Can move by swimming.
Name: Tiger
Color: Orange
Foot Number: 4
Can move by flying, running, swimming, etc.
```
阅读全文