假设我在课堂上有两种方法说
public void eat(int i,String s)
和
public void eat(String s, int i)
答案 0 :(得分:12)
重载意味着两个或多个具有相同名称但具有不同参数的方法,就像您的示例一样。重写您从接口或抽象类实现方法,以便超类中的方法具有实现,并且在子类中有一个不同的,他们仍然有相同的方法名称和参数。
答案 1 :(得分:7)
这将是方法重载,因为它满足方法重载的条件:
只有在涉及继承时才会发生覆盖。由于您的两个方法都属于同一个类,因此无法覆盖。
答案 2 :(得分:6)
这是超载。当您为同一方法签名提供不同的实现时,将在继承中使用覆盖。
答案 3 :(得分:2)
那是超载。简而言之:
覆盖=替换
重载=提供更多选项
答案 4 :(得分:2)
关于重载和覆盖的种规则:
*取自Kathy Seirra,Bert Bates的Sun认证程序员Java 6学习指南。
答案 5 :(得分:2)
方法重载只是意味着在类中提供两个具有相同名称但不同参数的单独方法,而方法返回类型可能会有所不同,也可能不同,这使我们可以重用相同的方法名称。
方法覆盖意味着在子类中定义一个方法,该方法已在父类中定义,具有相同的方法签名,即相同的名称,参数和返回类型。
方法重载和方法覆盖之间的区别
有关详细信息,请参阅Everything About Method Overloading Vs Method Overriding。
答案 6 :(得分:1)
重载:在 Java 中,重载是一个过程,其中一个类通过区分没有参数或参数类型来包含方法或构造函数的多个实现。
public class TestDemo
{
public void disp(String c)
{
System.out.println(c);
}
public void disp(String c, int n)
{
System.out.println(c+" "+n);
} }
class Sample
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
TestDemo obj=new TestDemo();
obj.disp("a");
obj.disp("a",2);
}}
Overriding :这里方法可以被overriding。它必须发生在两个班级内。一个是父母,另一个是孩子。在这个父类的同名同名方法中。
public class TestDemo
{
public void eat()
{
System.out.println("Human is Eating");
}
}
class Overriding extends TestDemo
{
public void eat()
{
System.out.println("Human is Eating");
}
public static void main(String[] args)
{
Overriding obj=new Overriding();
obj.eat();
}
}
有关更多知识,请单击此链接:https://arzatechs.com/overloading-and-overriding-in-java/
答案 7 :(得分:0)
属性------------------- OverLoading --------------------覆盖
方法名称-------------->必须相同-------------------->必须相同
Arg类型------------------>必须是不同的(至少arg)---->必须相同(包括订单)
方法签名----------->必须不同(至少arg)---->必须相同(包括订单)
退货类型---------------->无限制------------------->无限制
私人,静态,最终------->无限制-------------------->必须相同
访问Modifyer ------------>无限制--------------------相同
try / Catch ----------------->无限制--------------------抛出异常
方法解析-------->编译时间(参考)--------(JVM)运行时间Poymorphism
答案 8 :(得分:0)
过载:
在同一类中具有相同名称但参数不同的两个或多个方法。与您的问题情况相同。
public void eat(int i,String s)
public void eat(String s,int i)
因此,在您的情况下,这是方法重载。
覆盖:
例如。
class Animal{
void eat(){System.out.println("eating...");}
}
class Dog extends Animal{
void eat(){System.out.println("eating bread...");}
}
答案 9 :(得分:0)
在这种情况下,它是超载。
让我们对这两个术语进行一些区分:
重载(相同的函数名称,但签名不同):
覆盖(具有相同签名的相同功能):
访问以了解有关overloading and overriding的更多信息。