Level2.11继承

一、继承

#动物#
#老虎、狮子、大象

#动物有共性
##定义一个动物:1.有4条腿;2.陆地上跑;3.需要进食(属性+能力)
##猫:同上(继承了动物的属性和能力)
##老鼠:同上#Python里面也有这种结构,class类的继承
#1#案例猫

class Animal:   #父类
    def run(self):
        print('Animal is running...')

class Cat(Animal):  #子类 (子类中,填父类的名字)继承==>所有属性+方法
    pass

cat=Cat()
cat.run()

#2#练习老鼠

class Animal:   #父类
    def run(self):
        print('Animal is running...')

class Cat(Animal):  #子类 (子类中,填父类的名字)继承==>所有属性+方法
    pass

class Mouse(Animal):
    pass

cat=Cat()
cat.run()

mouse=Mouse()
mouse.run()

#3#父类里面,构造函数(若父类有构造函数)

class Animal:
    def __init__(self,food):#父类,传参
        self.legs=4
        self.food=food

    def run(self):
        print('Animal is running...')

class Cat(Animal):
    pass

class Mouse(Animal):
    pass

cat=Cat("fish")#则子类,也要传参#实例化子类
print(cat.legs)
print(cat.food)#实例化

#mouse=Mouse("苞谷")
#print(cat.legs)
#print(mouse.food)

#4#子类 继承 父类原因   [子类可继承+创建其他方法]
# 类比于,神话故事父亲有神力 ==传承 给自己的孩子==> 孩子出生就有父亲的所有能力(这种神力)+同时也有属于自己的能力==>后辈越来越强#5#父类里面,构造函数

class Animal:
    def __init__(self,food):#父类,传参
        self.legs=4
        self.food=food

    def run(self):
        print('Animal is running...')

class Cat(Animal):
    def ability(self):
        print('the cat can catch mice')

class Mouse(Animal):
    pass

####父类不能用子类方法,报错
animal=Animal()
animal.ability()

二、 多态

#刚刚 子类 继承 父类
##子类对继承过来的情况,进行更改#动物=>1.猫 2.老鼠
#所以,[吃东西]这个类,在[动物/猫/老鼠]有不同的表现,对该功能进行重写==>多态
#多态=以继承为前提,在继承的基础上进行重构

class Animal:
    def __init__(self,food):#父类,传参
        self.legs=4
        self.food=food

    def eat(self):
        print('I like eating')

class Cat(Animal):
# pass
    def eat(self):
        print('I like eating '+self.food)#多态,
    #     [改变子类中的方法;不影响父类中方法的内容]
    #同一个方法名,可以出现2种不同的形态,在类的多态中,对构造函数的[重构]

#对两个对象调用eat方法,结果一样  =======>但猫吃鱼,改变结果
animal=Animal("food")
animal.eat()

cat=Cat("fish")
cat.eat()#继承父类

#多态:既可以改变[子类的方法],又[不改变父类方法的内容]

三、重构

#重构:保留父类属性+自己属性 [先继承,再重构]
#父类中不合适的进行重构

class Animal:
    def __init__(self,food):#父类,传参
        self.legs=4
        self.food=food

    def eat(self):
        print('I like eating')

class Cat(Animal):
#---#新构造函数------------------------------------------
    def __init__(self,food,color):
        Animal.__init__(self,food)#继承父类的,构造函数(参数与父类一致)
        self.color=color#添加自己的属性
#------------------------------------------------------

    def eat(self):
        print('I like eating'+self.food)#多态,
    #     [改变子类中的方法;不影响父类中方法的内容]
    #同一个方法名,可以出现2种不同的形态,在类的多态中,对构造函数的[重构]

animal=Animal("food")
animal.eat()

cat=Cat("fish",'white')#new属性color
cat.eat()#继承父类
print(cat.legs)
#-------------------------
print(cat.color)
#--------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值