第二十一课:面向对象(3)

一、继承

        在现实生活中,继承一般指的是子女继承父辈的财产。那么在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中可以描述为猫和狗都继承自动物。同理,波斯猫和家猫都继承自猫。而斑点狗,泰迪都继承之狗。程序中当我们定义一个class的时候,可以从某个现有的class继承,新的class称之为子类(Subclass),而被继承的class称之为基类、父类或超类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

eg:

# 继承
class eg(): #父类
    def __init__(self,name,food):
        self.name = name
        self.food = food

    def eat(self):
        print('%s喜欢吃%s'%(self.name,self.food))


class eg1(eg):  #子类
    def __init__(self,name,food,drink):
        self.drink = drink
        #加载父类构造方法
        #eg.__init__(self,name,food)
        super(eg1, self).__init__(name,food)

    def drinks(self):
        print('%s喜欢喝%s'%(self.name,self.drink))

if __name__ == '__main__':
    a = eg1('哈士奇','骨头','可乐')
    a.eat()
    a.drinks()

还可以继承多个父类:如果继承的父类中有相同的方法名,而在子类中使用时未指定,python将从左至右查找父类中是否包含方法。

eg:

# 多继承
class A():
    def a(self):
        print('这是A里面的a方法')

class B():
    def b(self):
        print('这是B里面的b方法')

class C():
    def c(self):
        print('这是C里面的c方法')

class D():
    def d(self):
        print('这是D里面的d方法')

class E(A,B,C,D):   #继承ABCD四个父类的方法
    def e(self):
        print('这是E里面的e方法')

f=E()
f.a()
f.b()
f.c()
f.d()
f.e()

二、重写

        继承了父类中的方法后,在子类中也可以重写在父类中继承的方法。

        eg:

# 重写
class eg(): #父类
    def __init__(self,name,food):
        self.name = name
        self.food = food

    def eat(self):
        print('%s喜欢吃%s'%(self.name,self.food))


class eg1(eg):  #子类
    def __init__(self,name,food,drink):
        self.drink = drink
        #加载父类构造方法
        #eg.__init__(self,name,food)
        super(eg1, self).__init__(name,food)

    def drinks(self):   #重写方法
        print('%s喜欢喝%s'%(self.name,self.drink))

    def eat(self):
        print('重写方法')

if __name__ == '__main__':
    a = eg1('哈士奇','骨头','可乐')
    a.eat()
    a.drinks()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值