204-面向对象三大特性-3.多态

三种特性:

属性和方法的封装

3、多态

什么是多态(定义)

定义:多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果
①多态依赖继承
②子类方法必须要重写父类方法

好处:调用灵活,有了多态,更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化!

示例代码:

'''
首先定义一个父类,其可能拥有多个子类对象。当我们调用一个公共方法(接口)时,传递的对象不同,则返回的结果不同。
'''
class Fruit(object):
    def makejuice(self):
        print('i can make juice')

class Apple(Fruit):
    # 重写父类方法
    def makejuice(self):
        print('i can make apple juice')

class Banana(Fruit):
    # 重写父类方法
    def makejuice(self):
        print('i can make banana juice')

class Orange(Fruit):
    # 重写父类方法
    def makejuice(self):
        print('i can make orange juice')

# 定义一个公共接口(专门用于实现榨汁操作)
def service(obj):
    # obj要求是一个实例化对象,可以传入苹果对象/香蕉对象
    obj.makejuice()

# 调用公共方法
service(Orange())
python中多台的具体案例

+ 多态体现

+加号只有一个,但是不同的对象调用+方法,其返回结果不同。

如果加号的两边都是数值类型的数据,则加号代表运算符

如果加号的两边传入的是字符串类型的数据,则加号代表合并操作,返回合并后的字符串

'a' + 'b' = 'ab'

如果加号的两边出入序列类型的数据,则加号代表合并操作,返回合并后的序列

[1, 2, 3] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]