继承机制:
最大的好处就是子类获得父类的全部功能
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