zoukankan      html  css  js  c++  java
  • 面向对象三大特性之多态性

    面向对象三大特性之多态性

    一、概念

    官方解释:多个不同类对象可以响应同一个方法,产生不同的结果

    多态不是一种特殊的语法,而是一种状态,特性

    class Animal:
        def __init__(self, name, walk_way):
            self.name = name
            self.walk_way = walk_way
    
        def walk(self):
            print(f'{self.name}用{self.walk_way}走路!')
    
    
    class Person(Animal):
        pass
    
    
    class Pig(Animal):
        pass
    
    
    george = Person('george', '两条腿')
    pig = Pig('小明家养的猪', '四条腿')
    george.walk()
    pig.walk()
    
    # george用两条腿走路!
    # 小明家养的猪用四条腿走路!
    

    二、好处

    提高代码的复用性

    对于使用者而言,大大降低了使用难度

    三、实现多态

    接口、抽象类、鸭子类型,都可以写出具备多态的代码,最简单的就是鸭子类型

    """
    要管理 鸡 鸭 鹅
    如何能够最方便的 管理,就是我说同一句话,他们都能理解
    既它们拥有相同的方法
    
    """
    class JI:
        def bark(self):
            print("哥哥哥")
    
        def spawn(self):
            print("下鸡蛋..")
    
    class Duck:
        def bark(self):
            print("嘎嘎嘎")
    
        def spawn(self):
            print("下鸭蛋")
    
    class E:
        def bark(self):
            print("饿饿饿....")
    
        def spawn(self):
            print("下鹅蛋..")
    
    j = JI()
    y = Duck()
    e = E()
    
    def mange(obj):
        obj.spawn()
    
    mange(j)
    mange(y)
    mange(e)
    
    
    # python中到处都有多态,都使用type函数但返回结果不一样
    a = 10
    b = "10"
    c = [10]
    
    print(type(a))
    print(type(b))
    print(type(c))
    
  • 相关阅读:
    阶段01Java基础day26反射
    阶段01Java基础day25网络编程
    阶段01Java基础day24多线程+GUI
    阶段01Java基础day23多线程
    阶段01Java基础day22IO流03
    阶段01Java基础day21IO流02
    阶段01Java基础day18集合框架04
    阶段01Java基础day17集合框架03
    设置CMD默认路径
    MySQL 快速入门
  • 原文地址:https://www.cnblogs.com/DcentMan/p/11307255.html
Copyright © 2011-2022 走看看