在Java中,方法重载(Method Overloading)和方法重写(Method Overriding)是两种常见的概念,它们都涉及到在类中定义多个具有相同名称但参数列表不同的方法。虽然它们看起来有些相似,但实际上有着明显的区别。
方法重载(Method Overloading)
方法重载是指在一个类中可以定义多个具有相同名称但参数列表不同的方法。在方法重载中,方法的返回类型可以相同也可以不同,但参数列表必须不同。方法重载可以通过不同的参数个数、参数类型或参数顺序来区分不同的方法。
示例代码:
-- -------------------- ---- ------- ------ ----- ---------- - ------ --- ------- -- --- -- - ------ - - -- - ------ ------ ---------- -- ------ -- - ------ - - -- - -
在上面的示例中,Calculator
类中定义了两个名为add
的方法,一个接受两个整型参数,另一个接受两个双精度浮点型参数。这两个方法都被称为add
方法,但由于参数列表不同,它们被视为不同的方法。
方法重写(Method Overriding)
方法重写是指子类可以重新定义父类中已经定义的方法。在方法重写中,子类中的方法名称、参数列表和返回类型必须与父类中的方法完全相同。方法重写主要用于实现多态性,通过在子类中重写父类方法,可以根据实际情况调用不同的方法。
示例代码:
-- -------------------- ---- ------- ------ ----- ------ - ------ ---- ------- - -------------------------- -- ----------- - - ------ ----- --- ------- ------ - --------- ------ ---- ------- - ----------------------- -- ---------- - -
在上面的示例中,Animal
类中定义了一个名为speak
的方法,子类Dog
通过重写speak
方法实现了不同的行为。当调用Dog
对象的speak
方法时,输出的内容为"Dog is barking",而不是"Animal is speaking"。
以上就是方法重载和方法重写的区别,希望通过本章节的介绍能够帮助你更好地理解这两个概念。