继承
基类或父类或超类#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 基类
# object 表示Person是继承 object 且归根到底所有类都继承Object
class Person(object):
# 类似java构造器
# __init__ 函数的第一个参数一定是 self
# self 表示创建的实例本身
def __init__(self, name, age):
self.name = name
self.age = age
# 对象的方法
def toString(self):
print("%s : %s" % (self.name, self.age))
子类继承 基类或父类或超类子类继承 基类或父类或超类意味着父类所以的方法都可以使用,且子类可以有自己独有的方法
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 继承
from Person import *
# Man 继承了 Person 的所有方法
class Man(Person):
# 子类只有的方法
def manPrint(self):
print("I' m a man")
实例#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 继承
from Man import *
# 子类Man 继承父类 Person 的实例
mMan= Man("王大锤", "18")
mMan.toString()
# 子类方法
mMan.manPrint()
运行结果
D:\PythonProject\sustudy>python main.py
王大锤 : 18
I' m a man
多态表现形式,一句话就是:重写父类的方法
示例#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 继承
from Person import *
# Man 继承了 Person 的所有方法
class Man(Person):
# 子类只有的方法
def manPrint(self):
print("I' m a man")
# 多态,重新父类的方法
def toString(self):
print("重新父类方法,体现 多态 %s : %s" % (self.name, self.age))
运行如下
D:\PythonProject\sustudy>python main.py
重新父类方法,体现 多态 王大锤 : 18
I' m a man
具体好处,实际项目中你可以看到他的威力。哈哈哈
结语著名的“开闭”原则:
对扩展开放:[继承]允许新增 Person 子类;
对修改封闭:[多态]不需要修改依赖 Person 类型的 toString() 等函数由运行时该对象的确切类型决定,这就是多态真正的威力