重载(overload):
提供了创建同名的方法的能力,但这些方法需要使用不同的参数类型。
重载的要求:
两个方法的方法名相同,但参数类型和个数要有所不同。 发生在一个类里。
作用:
在不改变原方法的基础上新增功能。(用对象.的时候,可以.出两个方法)可以扩展函数。让类以统一的方式处理不同类型数据。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。方法重载可以提高函数的可读性。
主要用在构造函数里,在初始化类时,通过重载构造方法,来给对象赋予不同的值。
重写(overide):
也叫方法覆盖。
子类不想原封不动的封装父类的方法,而是做一定的修改。
重写的要求:
用新方法覆盖原来的方法。 发生在继承类里。
重写的两个方法返回值,方法名,参数列表必须完全一致。这样才能完全覆盖。像是扩展函数功能的另一种方法。
当子类重写了父类中的print()方法后,使用S调用的是子类的print()方法,父类中的print()方法被覆盖了。也就是说,如果现在子类将父类中的方法重写了,调用的时候肯定是调用被重写过的方法,那么如果现在一定要调用父类中的方法该怎么办呢?此时,通过使用.. super关键就可以实现这个功能,super关键字可以从子类访问父类中的内容,如果要访问被重写过的方法,使用“super.方法名(参数列表)”的形式调用。
在面向对象程序设计的思想中,类的继承和多态性主要就是体现在子类重写父类的方法。而构造方法的重载作为方法重载的一个典型特例,可以通过重载构造方法来表达对象的多种初始化行为。
我认为,重载和重写都是扩展函数功能的两种方法。