1.继承的概念和特点
在面向对象的编程中,继承是不可或缺的一个概念。继承是指一个类(称为子类)继承另一个类(称为父类)的特性。
子类可以重写或添加父类的属性、方法,也可以自定义属性与方法。当子类继承父类后,子类会自动拥有父类的一些属性和方法。子类可以通过继承父类的方式简化代码,提高代码的可读性,同时降低代码的复杂度。
继承的特点:
子类继承了父类的所有属性和方法。
子类可以重写或添加父类的方法。
子类可以自定义属性和方法。
子类在继承父类的同时,也可以继承父类的继承关系。
1.1 继承的语法
在 Python 中,使用以下方式实现继承:
class 父类名:
# 父类属性和方法的定义
class 子类名(父类名):
# 子类属性和方法的定义
注意:子类在定义时需要继承父类,继承时需要在子类名后面跟上父类名。
1.2 继承的实例
以下代码示例展示了 Sports 类作为 Person 类的子类,继承了 Person 类的私有属性 name,以及 Person 类的 show_info() 方法,同时增加了自己的 run() 方法:
class Person:
def __init__(self, name):
self.__name = name
def show_info(self):
print('我是 Person,我的名字是 %s' % self.__name)
class Sports(Person):
def __init__(self, name):
Person.__init__(self, name)
def show_info(self):
print('我是 Sports,我的名字是 %s' % self._Person__name)
def run(self):
print('我在跑步!')
p = Person('Tom')
p.show_info()
s = Sports('Lucy')
s.show_info()
s.run()
输出结果:
我是 Person,我的名字是 Tom
我是 Sports,我的名字是 Lucy
我在跑步!
从输出结果可以看出,子类 Sports 继承了父类 Person 的 __name 属性和 show_info() 方法,并添加了自己的 run() 方法。
2.多态的概念和特点
多态是指不同的对象对同一消息作出不同的响应。如果多个类都有同名的方法,我们可以通过多态来调用它们。多态可以通过子类继承父类或者实现接口来实现。
多态的好处:
可以提高代码的可重用性,利于代码的维护。
可以通过统一的方式调用不同类的同名方法,减少了代码的耦合性。
2.1 多态的语法
在 Python 中,实现多态需要注意以下几点:
父类中要定义同名的方法。
子类中必须重写父类的同名方法。
注意:Python 中不存在严格的类型检查,所以实现多态相对来说比较自由。
2.2 多态的实例
以下代码示例展示了多态的使用:
class Animal:
def sound(self):
pass
class Dog(Animal):
def sound(self):
print('汪!')
class Cat(Animal):
def sound(self):
print('喵!')
def run(animal):
animal.sound()
dog = Dog()
cat = Cat()
run(dog)
run(cat)
输出结果:
汪!
喵!
从输出结果可以看出,通过统一的方式调用不同类的同名方法 sound(),在不同的实例中产生了不同的响应。
3.总结
继承和多态是面向对象的重要概念之一,它们可以大大提高代码的可读性和可维护性,从而提高代码的效率。在编写面向对象的程序时,必须深入理解继承和多态的原理和用法,才能写出高质量的面向对象的程序。