python继承多态(第三节)

继承机制:

最大的好处就是子类获得父类的全部功能

class Animal(object):
    def run(self):
        print("Animal is running")
class Dog(Animal):
    pass
class
Duck(Animal):
    pass
dog = Dog()
dog.run()
duck = Duck()
duck.run()

 

也可以对子类增加一些方法

class Animal():
    def run(self):
        print("动物会跑")

class Dog(Animal):
    def eat(self):
        print("吃吧")
class Duck(Animal):
    pass
dog = Dog()
dog.run()
dog.eat()

 

派生类可以继承父类的公有成员,但是不能继承其私有成员。(可以使用super()或者基类名.方法名()的方式强制继承父类

class Parent(object):
    def public(self):
        print("parent public")
    def __private(self):
        print("parent private")
    def __int__(self):
        print("父类构造器")
class Son(Parent):
    def __int__(self):
        print("子类构造器")
son = Son()

 

方法重写


class Animal(object):
    def run(self):
        print("Animal is running")
class Dog(Animal):
    def run(self):
        print("fast")
class Duck(Animal):
     def run(self):
         print("slowly")
dog = Dog()
dog.run()
duck = Duck()
duck.run()

 

D:\anaconda\python.exe D:/untitled/demo.py

fast

slowly

进程已结束,退出代码 0

 

当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖金了父类的run(),在代码运行的时候,

总是会调用子类的run(),这样我们就获得了继承的另一个好处:多态

 多态:基类的同一个方法在不同派生类对象中具有不同的表现和行为(方法重写是多态的前提


class Animal(object):
    def show(self):
        print("I am an Animal")
class Dog(Animal):
    def show(self):
        print("I am a dog")
class Duck(Animal):
     def show(self):
         print("I am a duck")
class Cat(Animal):
     def show(self):
         print("I am a cat")
class Tiger(Animal):
     def show(self):
         print("I am a tiger")
dog = Dog()
dog.show()
duck = Duck()
duck.show()
cat = Cat()
cat.show()
tiger = Tiger()
tiger.show()

 D:\anaconda\python.exe D:/untitled/demo.py

I am a dog

I am a duck

I am a cat

I am a tiger

进程已结束,退出代码 0

猜你喜欢

转载自www.cnblogs.com/abcd8833774477/p/11755554.html