方法重载(Overloading)
-
定义:方法重载是指在同一个类中,多个方法有相同的名字但参数不同。参数不同可以指参数的数量不同,或者参数的类型不同。
-
返回类型:方法重载与返回类型无关,仅仅依赖于方法名和参数列表。所以即使返回类型不同,但如果方法名和参数列表相同,也不会构成重载。
-
应用场景:方法重载通常用于实现相似功能的多个方法,比如一个
print
方法可以打印字符串、整数、浮点数等不同类型的数据。 -
编译时多态:重载是一种编译时多态性,调用哪个方法是在编译时决定的。
方法重写(Overriding)
-
定义:方法重写是指在子类中重新定义父类中的一个方法。这个方法在子类中有相同的名称、参数和返回类型。
-
返回类型:方法重写要求返回类型必须与被重写的方法相同,或者是其子类型。
-
访问修饰符:重写方法的访问修饰符不能比父类方法的更严格。例如,如果父类方法是
public
,子类中重写的方法也必须是public
。 -
应用场景:方法重写用于实现多态性,允许子类提供具体实现,从而改变或扩展父类的行为。
-
运行时多态:重写是一种运行时多态性,调用哪个方法是在运行时决定的,这通常与对象的实际类型有关。
举个例子帮助理解
-
方法重载:想象一下你有一个工具箱,里面有多个螺丝刀,虽然它们的作用都是拧螺丝,但大小不同。你会根据不同的螺丝选择合适的螺丝刀,这就像选择不同参数的重载方法。
-
方法重写:假设你买了一辆车(父类),但你想给它换个更好的引擎(重写方法)。虽然外表看起来一样,但由于引擎的不同(方法的具体实现不同),它的性能可能会更好。