(承接上次的知识学习)
首先给出方法重写的定义:
1.如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其(方法体)进行重新编写;
2.子类重写后的方法可以通过super().xxx()调用父类中被重写的方法。
给出以下操作代码:
class Person (object):#说明Person继承object类
def __init__(self,name,age):
self.name=name
self.age=age
def chs(self):
print(self.name,self.age)
#定义Person子类
class Student(Person):
def __init__(self,name,age,stu_no):
super(Student, self).__init__(name,age)
self.stu_no=stu_no
#方法重写
def chs(self):
super(Student, self).chs()
print("学号为:",self.stu_no)
class Teacher(Person):
def __init__(self,name,age,teacherofyear):
super(Teacher, self).__init__(name, age)
self.teacherofyear=teacherofyear
#方法重写
def chs(self):
super(Teacher, self).chs()
print("教龄为:",self.teacherofyear)
# 定义对象
stu1=Student('张三',20,'2113042122')
tea1=Teacher('李四',45,10)
stu1.chs()
print('---------------------')
tea1.chs()
#输出:
#张三 20
#学号为: 2113042122
#----------------------
#李四 45
#教龄为: 10
本案例子类对父类方法(chs)进行重写,并重新对其进行定义。
注意:此时父类原先的定义将会被覆盖。
如果此时仍然想使用父类中的方法可以使用super().xxx()
class Person (object):#说明Person继承object类
def __init__(self,name,age):
self.name=name
self.age=age
def chs(self):#子类依然使用的父类方法
print(self.name,self.age
class Student(Person):
def __init__(self,name,age,stu_no):
super(Student, self).__init__(name,age)
self.stu_no=stu_no
#方法重写
def chs(self):#子类改写父类方法
super(Student, self).chs()#子类使用父类方法
print("学号为:",self.stu_no)
stu1=Student('张三',20,'2113042122')
stu1.chs()#对象调用方法