This question already has answers here:
Java overloading and overriding
(9个答案)
2年前关闭。
我有一个类BindingSample带有不带参数的方法
另一个类扩展BindingSample并使用相同的方法签名,但向其中添加一个参数
输出更改为我的值5
即使参数不同,为什么仍能正常工作?为什么称之为超载?我不认为这是最重要的,因为要重写一个方法,方法签名及其参数应该相同。
从现在起,编译器无法在带有
为什么称之为超载?我不认为这是最重要的,因为要重写一个方法,方法签名及其参数应该相同
覆盖和重载是两个不同的概念。
当多个方法共享相同的名称但具有不同数量的参数或不同类型的参数时,将发生方法重载。
您的
(9个答案)
2年前关闭。
我有一个类BindingSample带有不带参数的方法
public class BindingSample {
public void printMsg(){
System.out.println("Binding Sample no parameter");
}
}
另一个类扩展BindingSample并使用相同的方法签名,但向其中添加一个参数
public class application extends BindingSample {
public void printMsg(int i){
System.out.println("Changed my value " + i);
}
public static void main(String[] args) {
application app = new application();
app.printMsg(5);
}
}
输出更改为我的值5
即使参数不同,为什么仍能正常工作?为什么称之为超载?我不认为这是最重要的,因为要重写一个方法,方法签名及其参数应该相同。
最佳答案
即使参数不同,为什么仍能正常工作?
您的application
类具有一个printMsg
方法,该方法采用单个int
参数。因此app.printMsg(5)
起作用。
请注意,进行以下更改将导致您的代码不通过编译:
BindingSample app = new application();
app.printMsg(5);
从现在起,编译器无法在带有
printMsg
参数的BindingSample
类中找到int
方法。为什么称之为超载?我不认为这是最重要的,因为要重写一个方法,方法签名及其参数应该相同
覆盖和重载是两个不同的概念。
当多个方法共享相同的名称但具有不同数量的参数或不同类型的参数时,将发生方法重载。
您的
application
类有两个printMsg
方法(一个是从其父类继承的),它们的参数数量不同。因此,这就是方法重载。10-08 16:09