多态是基于继承的,他是指⽗类中定义的属性和⽅法被⼦类继承之后,可以具有不同的数据 类型或者表现出不同的⾏为,使得同⼀个属性在⽗类及其⼦类中具有不同的含义。详细举例说明
时间: 2024-04-08 19:31:23 浏览: 13
多态是面向对象编程中的一个重要概念,它允许不同的对象对相同的消息作出不同的响应。在基于继承的多态中,父类中定义的属性和方法可以被子类继承,并且可以根据子类的具体实现而表现出不同的数据类型或行为。
举个例子来说明,假设有一个动物类(Animal)作为父类,其中定义了一个名为"makeSound"的方法。然后我们派生出两个子类,分别是狗类(Dog)和猫类(Cat)。在父类中,"makeSound"方法被定义为发出一种通用的动物声音。
```python
class Animal:
def makeSound(self):
print("发出动物声音")
class Dog(Animal):
def makeSound(self):
print("汪汪汪")
class Cat(Animal):
def makeSound(self):
print("喵喵喵")
```
在这个例子中,父类Animal定义了一个通用的"makeSound"方法,而子类Dog和Cat分别重写了这个方法,使得它们具有不同的声音行为。
通过多态的机制,我们可以创建不同类型的对象,并调用它们的"makeSound"方法,结果将根据对象的实际类型而产生不同的行为:
```python
animal1 = Animal()
animal2 = Dog()
animal3 = Cat()
animal1.makeSound() # 输出:发出动物声音
animal2.makeSound() # 输出:汪汪汪
animal3.makeSound() # 输出:喵喵喵
```
这里animal1是Animal类的实例,调用makeSound方法时会输出父类定义的通用动物声音。而animal2和animal3分别是Dog类和Cat类的实例,它们调用makeSound方法时会输出各自子类中重写的具体声音行为。
这就是基于继承的多态,通过继承和方法重写,实现了相同的方法在不同子类中具有不同的行为。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)