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))
    
  • 相关阅读:
    win7,win10获取屏幕缩放适应截图
    cg语言学习&&阳春白雪GPU编程入门学习
    Unity Plugins的使用方法
    记录Unity的优化tip(不断更新)
    深入理解法线贴图原理
    读香菱学诗
    排序算法学习
    图的算法复习大纲
    Gama Space 和 Linear Space 学习
    BM算法学习
  • 原文地址:https://www.cnblogs.com/DcentMan/p/11307255.html
Copyright © 2011-2022 走看看