Python 多态性

1.方法的覆写:子类继承父类后可以根据父类的方法名称进行方法体的重新定义。

2.对象多态性:在方法覆写的基础上利用相同的方法名称作为标准,就可以在不考虑具体类型的情况下实现不同子类中相同方法的调用

实例:方法覆写

class Channel:
    def build(self):
        print("通道连接")
        
class DatabaseChannel(Channel):
    def build(self):
        print("数据库通道连接")


def main():
    channel=DatabaseChannel()
    channel.build()
if __name__ =="__main__":
    main()

实例:调用父类被覆写的方法

class Channel:
    def build(self):
        print("通道连接")
        
class DatabaseChannel(Channel):
    def build(self):
        super().build()
        print("数据库通道连接")


def main():
    channel=DatabaseChannel()
    channel.build()
if __name__ =="__main__":
    main()

对象的多态性:

class Message:
    def get_info(self):
        return "Message"
    
class DatabaseMessage(Message):
    def get_info(self):
        return "DatabaseMessage"
    
class NetMessage(Message):
    def get_info(self):
        return "NetMessage"
    
class Channel:
    def send(self,msg):
        print(msg.get_info())
        

def main():
    channel=Channel()
    channel.send(Message())
    channel.send(DatabaseMessage())
    channel.send(NetMessage())
    
if __name__ =="__main__":
    main()

利用isinstance()函数保证代码的正确执行

class Message:
    def get_info(self):
        return "Message"
    
class DatabaseMessage(Message):
    def get_info(self):
        return "DatabaseMessage"
    
class NetMessage(Message):
    def get_info(self):
        return "NetMessage"
    
class Channel:
    def send(self,msg):
        if isinstance(msg, DatabaseMessage):
            print(msg.get_info())
        

def main():
    channel=Channel()
    channel.send(Message())
    channel.send(DatabaseMessage())
    channel.send(NetMessage())
    
if __name__ =="__main__":
    main()

工厂设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值