1.继承和多态
在面向对象的程序中,当定义一个类的时候,可以从现成的类继承,这个新类被称为子类,(subclass),被继承的类称为父类、基类、或超类。
class animal(object):
def run(self):
print('一个')
class Dog(animal):
pass
class Cat(animal):
pass
dog = Dog()
dog.run()
cat=Cat()
cat.run()
结果:
一个
一个
继承的好处就是子类可以获得父类的全部功能。
也可以对子类增加一些方法:
代码
class animal(object):
def run(self):
print('一个')
class Dog(animal):
print('小狗')
class Cat(animal):
print('小猫')
dog = Dog()
dog.run()
cat=Cat()
cat.run()
结果:
小狗
小猫
一个
一个
2.多态
当子类和父类都存在相同的run()方法时,子类的run会覆盖父类的run,这也就是多态的功能
class animal(object):
def run(self):
print('一个')
class Dog(animal):
def run(self):
print('小狗一只')
class Cat(animal):
def run(self):
print('小猫一只')
dog = Dog()
dog.run()
cat=Cat()
cat.run()
3.理解多态
当定义一个类的时候,实际上就定义了一种数据类型,这种数据类型和list,str,没什么区别,
a=list()
b=animal()
c=Cat()
D=Dog()
print(isinstance(c, Cat))
print(isinstance(c, animal))
结果:
True
True
这里c即属于Cat,又属于animal,合理的原因是因为,Cat是从animal继承下来的,所以属于Cat的数据类型一定属于anmial,但是反过来就不行了。
print(isinstance(b, dog))
TypeError: