面向对象-重写父类方法

继承父类方法的几种方式:

一.重写父类的方法:

父类:

class Zll():   #父类
    def smile(self):
        print('哈哈哈')

子类:

class Xz(Zll):
    def smile(self):  #拥有与父类相同的方法,即重写父类的方法
        print('呵呵呵呵')

二.重写父类方法:在父类基础上,再加新的功能:

方式一:可通过调用父类方法,然后再写自己的方法来实现(特征:父类有这个方法,但是它的功能不够完善,给这个方法在原有基础上再添加一些新功能)。

子类:

class Xz(Zll):
    def smile(self):  #先重写父类的方法
        Zll().smile()   #,先实例化Zll(),调用了父类方法
        print('呵呵呵呵')  #然后再加入自己方法的内容

方式二:可通过调用父类方法,然后再写自己的方法来实现(特征:父类有这个方法,但是它的功能不够完善,给这个方法在原有基础上再添加一些新功能)。

用super()来实现

子类:super(自己的类名,self)

class Xz(Zll):
    def smile(self):  #先重写父类的方法
        super(Xz,self).smile()  #这个自动帮你找到父类,然后调用相同的方法,所以存在多个父类时,有差别,请看下面分解
        print('呵呵呵呵')  #然后再加入自己方法的内容

三.多继承:多继承时,直接用父类实例化.方法来调用,即:Zll().smile(),要分别指出调用哪个父类的方法

# coding=utf-8
class Zll():
    def smile(self):
        print('哈哈哈')

class Dcg():
    def smile(self):
        print('啊啊啊啊啊')

class Lw():
    def smile(self):
        print('嘿嘿嘿')

class Xz(Zll,Dcg,Lw):  #多继承,及有多个父类
    def smile(self):   #重写父类的方法
        Zll().smile()  #调用Zll的smile方法
        Dcg().smile()  #调用Dcg的smile方法,即分别写调用哪个父类方法
        print('呵呵呵')  #自己的方法

使用super()来写,修改父类方法(比较常见):

# coding=utf-8
class Zll():
    def smile(self):
        print('哈哈哈')

class Dcg():
    def smile(self):
        print('啊啊啊啊啊')

class Lw():
    def smile(self):
        print('嘿嘿嘿')

class Xz(Zll,Dcg,Lw):  #多继承,及有多个父类
    def smile(self):   #重写父类的方法
        super(Xz,self).smile()  #这个自动帮你找到父类,如果多个父类有相同的方法时,默认继承第一个相同方法
        print('呵呵呵')  #自己的方法

猜你喜欢

转载自www.cnblogs.com/fancyl/p/9100506.html