对于父类方法,只要不符合子类模拟的实物行为,都可对其进行重写。可在子类中定义一个跟父类同名的方法即可实现。
代码中通过重写狗的年龄增加方法,实现确认是否是小狗的效果;
1、定义狗的父类,包含名字,年龄属性;定义父类的方法以期实现改名和年龄递增的效果;
2、定义子类小狗,继承父类属性并定义小狗在哭的特有行为;重写了父类中的年龄递增方法,指出递增后的狗是不是小狗且打印提示信息;
3、创建实例,确认重写的方法有效;
创建了两个实例,想看看不同的年龄和递增年龄是否会出现预期的效果;直接打印并调用递增方法,发现值为None。究其原因发现时方法中并未给函数返回值,函数不会自动返回值所以为空。
直接打印小狗实例年龄信息,均符合预期;
对重写的方法,添加return语句,返回属性值;再次调用方法并打印出现了期望中的效果。超出预料的是,只要继承父类属性且有初始值,就可返回self.形参的值且不会出错,属性值相当于函数中的变量,只要被定义就可返回。