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