语法角度讲
继承方法
1. 代码:
class 父类:
def 父类方法(self):
方法体
class 子类(父类):
def 子类方法(self):
方法体
儿子 = 子类()
儿子.子类方法()
儿子.父类方法()
2. 说明:
子类直接拥有父类的方法.
内置函数
isinstance(对象, 类型)
返回指定对象是否是某个类的对象。
issubclass(类型,类型)
返回指定类型是否属于某个类型。
继承数据
1. 代码
class 子类(父类):
def init(self,参数列表):
super().init(参数列表)
self.自身实例变量 = 参数
2. 说明
子类如果没有构造函数,将自动执行父类的,但如果有构造函数将覆盖父类的。此时必须通过super()函数调用父类的构造函数,以确保父类实例变量被正常创建。
定义
重用现有类的功能,并在此基础上进行扩展。
说明:子类直接具有父类的成员(共性),还可以扩展新功能。
优点
一种代码复用的方式。
缺点
耦合度高:父类的变化,直接影响子类。
设计角度讲
定义
将相关类的共性进行抽象,统一概念,隔离变化。
适用性
多个类在概念上是一致的,且需要进行统一的处理。
封装内存图
设计思想
‘老张开车去东北’
“”"
继承 - 设计角度
“”"
class Person:
def __init__(self, name=""):
self.name = name
1. def go_to(self, vehicle, pos):
print("去", pos)
vehicle.transport()
2.class Vehicle:
def transport(self):
pass
# ------------------------------------------------
class Car(Vehicle):
def transport(self):
print("汽车行驶...")
class Airplane(Vehicle):
def transport(self):
print("飞喽...")
lz01 = Person("老张")
c01 = Car()
a01 = Airplane()
lz01.go_to(a01, "东北")
定义一个人类 人要用交通工具去 东北
交通工具 有可能是车 飞机 火车大炮等 把这些 交通工具分别写成一个类 上面调用 交通工具 如果行程有改变 会判断好多次
这时候 如果把交通工具写成一个父类 (图上代码2) 再用上面(1)调用…草表达不出来了
多态
设计角度讲
定义
父类的同一种动作或者行为,在不同的子类上有不同的实现。
作用
1. 在继承的基础上,体现类型的个性化(一个行为有不同的实现)。
2. 增强程序扩展性,体现开闭原则。
语法角度讲
重写
子类实现了父类中相同的方法(方法名、参数)。
在调用该方法时,实际执行的是子类的方法。