python 的继承之override方法重写
什么是override
override字面理解是无效,消除的意思,在Python里两个同名的方法但执行不同程序,其中一个方法使得另外一个方法无效的,这就叫override(重写)。
通常情况下,父类中的方法,而子类中有同名方法,在执行该方法时,调用的是该方法对应的类。
值得一提的是,这里父类和子类在原文中是superclass(总纲)和subclass(亚纲),用的是生物学术语,反应出计算机中的类与生物学分类的核心思想相似
实例
# 定义一个矩形为父类
class Rectangle():
def __init__(self,length,breadth):
self.length = length
self.breadth = breadth
def getArea(self):
print self.length*self.breadth," is area of rectangle"
# 定义一个正方形为继承矩形的子类
class Square(Rectangle):
def __init__(self,side):
self.side = side
Rectangle.__init__(self,side,side)
# 重写父类方法
def getArea(self):
print self.side*self.side," is area of square"
s = Square(4)
r = Rectangle(2,4)
s.getArea()
r.getArea()
Square继承了Rectangle的变量和方法,此时getArea函数应该是def getArea(self): print self.length*self.breadth," is area of rectangle"
,接着调用了Square定义的getArea函数,使得原来从Rectangle函数继承的getArea无效,现在的getArea函数为def getArea(self): print self.side*self.side," is area of square"
优势
我们在新建类的时候就不用想很多很多名字,想名字也是一个头疼的事情