20 面向对象4: 方法的继承,重写,私有属性,私有方法

class Animal:
    def eat(self):
        print("eat")
    def __sleep(self):    # __开头的方法是私有的,不能在类定义外面使用,不能被子类调用,但是可以在父类公有方法中调用私有属性或方法,子类就可以间接调用这些私有属性或方法
        print("sleep")

    def __init__(self):
        self.__age=5 #__开头的属性是私有的,不能在类定义外面使用
class Dog(Animal): #Dog 类继承Animal类的全部属性和方法,也有eat() ,__sleep() ,age def bark(self): #定义一个Dog 才有的Bark属性 print("bark bark ") class SingleDog(Dog): def bark(self): #对bark 属性进行重写,不再有父类的bark方法 print("sing sing") class GodDog(Dog): def fly(self): print("fly") def bark(self): #对bark 属性进行重写, 保留有父类的bark方法 super().bark() # 调用父类的方法
        Dog.bark(self) # 同上,老版本py调用父类方法
print("ying ying ") #同时,追加其他的操作
dog
=Dog() dog.bark() print("-"*50) single_dog=SingleDog() single_dog.bark() print("-"*50) goddog=GodDog() goddog.bark() man=Animal()
# __开头的属性和方法是私有的,不能在类定义外面使用,报错!! #man.__sleep()
#py 没有严格的私有,可以通过如下方法调用私有属性和方法,不推荐 man._Animal__sleep()

 

posted @ 2020-06-11 21:50  abel2020  阅读(234)  评论(0编辑  收藏  举报