public class overload1 {
public Object show()
{
return "0";
}
}
class overload2 extends overload1{
public String show(){
return "1";
}
}
答案 0 :(得分:14)
覆盖。您正在扩展该类,并覆盖超类方法。
重载看起来像这样:
public class overload1 {
public Object show()
{
return "0";
}
public Object show(Object arg) // Same method name, but different arguments.
{
return "0";
}
}
答案 1 :(得分:4)
最简单的测试方法是放置@Override
:
class overload2 extends overload1{
@Override
public String show(){
return "1";
}
}
因此它是一个有效的覆盖(考虑Java> 1.5)
答案 2 :(得分:3)
方法重载意味着两个或多个方法具有相同的名称但签名不同(即不同的输入参数类型,不同的返回类型)
方法重写意味着在继承的类中具有相同方法的不同实现。这两种方法具有相同的签名,但实现方式不同。
所以,在你的例子中,overload2类的show()会覆盖overload1类的show()
答案 3 :(得分:2)
你正在做的是压倒一切。重载是指2个方法具有相同名称但参数不同。
希望有所帮助:)
答案 4 :(得分:2)
Method Overloading表示在同一个类中使用不同的参数编写相同的方法名称,overriding表示在超类和子类中编写相同的方法。
在你的例子中,你在超类和子类中编写相同的方法,所以它的方法覆盖。
答案 5 :(得分:1)
这是一个重要原因,您刚刚重新定义了已经在父类overload1中定义的方法show()。重载处理具有相同方法名称的多个方法,在同一个类中,但具有不同的参数。
答案 6 :(得分:0)
它是一种Overriding,因为在重载参数必须改变
答案 7 :(得分:0)
这是一个覆盖。请参阅Tom Jeffery关于过载的答案。
我认为你可能会问的是“你可以通过更改返回类型来重载吗?” 你不能这样做。您需要更改方法签名(参数类型列表)才能重载。您可以在同一个类或子类中执行此操作。
覆盖意味着超类中的方法无法访问。换句话说,通过在.show()
的实例上调用overload2
,您可以直接到达overload1.show()
吗?如果没有,那就是覆盖。