zoukankan      html  css  js  c++  java
  • 3.1类-方法的重写

    # 2020.3.1
    #重写父类方法与调用父类方法
    """1.重写父类方法
    所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖
    掉父类中同名的方法

    重要:如何使用父类中相同方法名的方法,会优先调用子类中的该方法,需要在子类的定义中加入super().+方法。,
    """
    class Animal:
    
        #!!!!父类中定义init方法
        def __init__(self,name):
            self.name  =  name
            print('对象的初始化')
            self.color = '黄色'
        def eat(self):
            print('能吃的动物')
        def run(self):
            print('能跑的动物')
    。
    
    
    class  Dog(Animal):
    
        #!!init和父类的init名字一样,所以叫方法的重写
        def __init__(self,name):
            super().__init__(self)  #!!!!当写了这行代码时候不覆盖init内容  dog.color   output:黄色 不报错
            self.name = name
            print('狗的初始化')
        def set_name(self):
            print('狗的名字是%s'%self.name)
    
        def eat(self):
            print('狗的eat方法')
    
    dog=  Dog('小白')  #如果子类中对某个方法重写了,优先调用 子类自己本身的方法
    print(dog.name)
    print(dog.color)#NameError: name 'color' is not defined 父类中color没有调用
    #因为子类重写了init方法
    #虽然init方法重写了,但是还想自动调用父类的init方法
    #需要在子类内加入super().__init__() 即主动调用父类的init方法
    
    print(dog.eat())#如果希望调用父类里的eat方法则需要在子类里加入super().eat()
  • 相关阅读:
    趣图:程序员告诉你为什么充钱后速度更快
    金三银四铜五铁六,面试得做好这个准备
    Java中如何模拟真正的同时并发请求?
    趣图:程序员最头疼的原因
    Java并发面试题
    linux内存分配与回收
    7.3 Set集合
    7.2 Java 11新增的Collection和Iterator接口
    7.1 Java集合概念
    6.5 正则表达式
  • 原文地址:https://www.cnblogs.com/yescarf/p/12907087.html
Copyright © 2011-2022 走看看