赞
踩
" 多态 " 指的是 多种状态 , 相同类型 的 不同 对象 完成 某个行为时 , 会得到不同的状态 ;
多态 一般 是 通过 继承 和 方法重写 实现 , 多个子类 继承 同一个父类 ,
这些 子类对象 重写 父类的 方法 , 实现不同的逻辑 ,
为 父类 类型变量 赋值 不同的 子类对象 , 当调用被重写的父类方法时 , 执行不同的逻辑 , 此时就实现了多态 ;
子类重写父类的方法 , 这意味着子类可以定义与父类相同名称的方法 , 但实现方式可以不同 ;
当通过子类对象调用该方法时 , 将执行子类的方法 , 而不是父类的方法 ;
这种行为使得子类可以对相同的消息做出不同的响应 , 实现了多态 ;
" 多态 " 是通过继承关系 实现的 ;
多态使用规则 :
下面的代码中 ,
Animal 类是 父类 , 其中定义了行为 make_sound 方法 ,
Dog 类 和 Cat 类 继承 Animal 类 , 并重写了 Animal 父类的 make_sound 方法 ,
为 类型注解 为 Animal 类型的变量 , 分别赋值 Animal 实例对象 , Dog 实例对象 , Cat 实例对象 ,
当调用 这三个对象的 make_sound 方法 , 会执行不同的操作 ;
代码示例 :
""" 面向对象 - 多态 """ class Animal: name = "Animal" age = 0 def make_sound(self): print("动物发音") class Dog(Animal): def make_sound(self): print("汪汪") class Cat(Animal): def make_sound(self): print("喵喵") animal: Animal = Animal() animal.make_sound() print("") dog: Animal = Dog() dog.make_sound() print("") cat: Animal = Cat() cat.make_sound()
执行结果 :
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
动物发音
汪汪
喵喵
Process finished with exit code 0
父类 只 定义 空方法 , 方法体是 pass
, 没有具体实现 ;
这种 父类 , 就是 " 抽象类 " ;
方法体为空 , 也就是 pass 的方法 , 称为 " 抽象方法 " ;
有 " 抽象方法 " 的类 , 称为 抽象类 ;
定义抽象类 Animal 类 ,
在 Animal 类中, 定义了抽象方法 make_sound 方法 , 该方法的 方法体为空 , 是 pass , 没有任何逻辑 ;
子类 Cat / Dog 继承 Animal 类 , 实现 make_sound 方法 , 分别执行不同的操作 ;
代码示例 :
""" 面向对象 - 多态 """ class Animal: def make_sound(self): pass class Dog(Animal): def make_sound(self): print("汪汪") class Cat(Animal): def make_sound(self): print("喵喵") dog: Animal = Dog() dog.make_sound() print("") cat: Animal = Cat() cat.make_sound()
执行结果 :
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
汪汪
喵喵
Process finished with exit code 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。