您现在的位置是:课程

Python:函数重定义的本质

2023-06-30 21:10课程 人已围观

函数重定义是指子类对父类中的一个方法进行重新定义,其中函数名、参数表等都不发生变化,仅仅函数体发生变化。函数重定义是面向对象方法的两个基石之一(另一个是封装)。封装是指把数据和操作数据的方法封装在一个类中,这比较好理解。但是重定义就没有那么好理解了。很多程序员用不好重定义,从而导致程序设计水平和能力不能取得实质性的提高,原因就是失去了重定义的助力。这就好比,别人开飞机,你骑自行车,任你再努力,也赶不上人家轻松一脚油门。

人们通常认为函数重定义的目的是使子类在某个指定方法上,表现得与父类不同。但这并不是重定义的本质,重定义的本质是直接或间接地改变父类的行为。

比如设A是B的父类,且A中存在一个方法m1(),则B继承了这个方法,这意味着我们也可以对B类的对象调用m1()方法,并且其行为与A中的m1()方法完全相同。如果B重定义了m1()方法,并且在函数体中执行了与A的m1()不同的操作,则程序员在对B类对象执行m1()方法时,函数执行的结果就与A中的m1()方法不同。

但问题是,如果这就是重定义的本质的话,那我们为什么一定要在B中定义一个m1()方法呢?我们完全可以在B中定义一个m2()方法,然后针对B类对象调用m2()不就行了吗?

所以,子类改变父类的行为并不是子类进行重定义的本质。重定义有其必须存在的理由,本节课就这个问题展开讨论,让你对面向对象方法,特别是重定义技术的认识有一个本质上的提高。
-->

站点信息

  • 文章统计篇文章