假设我有一类两种方法说的Java超载和压倒一切的
public void eat(int i,String s)
和
public void eat(String s, int i)
那么它是什么样子。超载或覆盖?
假设我有一类两种方法说的Java超载和压倒一切的
public void eat(int i,String s)
和
public void eat(String s, int i)
那么它是什么样子。超载或覆盖?
重载意味着两个方法或多个具有相同名称但具有不同参数的方法,就像您的示例。重写您从接口或抽象类实现方法,以便超类中的方法具有实现,并且在子类中有一个不同的,但他们有相同的方法名称和参数。
这将是方法重载,因为它满足了方法重载的条件:
只有在涉及继承时也可以重写。由于你的两个方法都在同一个类中,所以它不能重写。
这是超载。当您为不同的实现提供相同的方法签名时,覆盖用于继承。
这是超载。简而言之:
重写=更换
重载=给予更多的选择
类约超载和压倒一切的规则:
*取自Sun Certified Programmer for Java 6学习指南作者:Kathy Seirra,Bert Bates。
房源------------------- OverLoading --------------------覆盖区
方法名称-------------->必须相同-------------------->必须相同
Arg类型------------------>必须不同(atleast arg)---->必须相同(包括订单)
方法签名------ ----->必须不同(atleast arg)---->必须相同(包括订单)
返回类型---------------->没有限制------------------->ñ Ø限制
私人,静态,最终------->无限制-------------------->必须与
访问修改器------------>无限制--------------------相同
try/Catch ------ ----------->无限制--------------------抛出异常
方法解析------- - >编译器时间(参考)--------(JVM)运行时间Poymorphism
方法重载只是意味着在一个具有相同名称但参数不同的类中提供了两个单独的方法,而方法的返回类型可能相同也可能不同,这允许我们重用相同的方法名称。
方法覆盖装置限定在其中与同一即名称,参数相同的方法签名父类已经定义,并返回型子类的方法。
差分方法重载和方法覆盖之间
欲了解更多详情,您可以阅读Everything About Method Overloading Vs Method Overriding。
只需阅读每篇文章的第一句话http://en.wikipedia.org/wiki/Method_overloading http://en.wikipedia.org/wiki/Method_overriding – 2010-10-03 06:09:39
如果您的方法放在孩子身上,它会超载和重载提供不同暗示的类。 – qrtt1 2010-10-03 06:15:09