面向对象继承 多态

语法角度讲

继承方法
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. 增强程序扩展性,体现开闭原则。
语法角度讲
重写
子类实现了父类中相同的方法(方法名、参数)。
在调用该方法时,实际执行的是子类的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值