Java中对方法重载有哪些限制?
当一个类具有两个或多个具有相同名称但参数不同的方法时,在基于传递的参数进行调用时,将调用相应的方法(或相应的方法主体将与调用行动态绑定)。这种机制称为方法重载。
示例
class Test{public int division(int a, int b){
int result = a/b;
return result;
}
public double division (float a, float b){
double result = a/b;
return result;
}
}
public class OverloadingExample{
public static void main(String args[]){
Test obj = new Test();
System.out.println("division of integers: "+obj.division(100, 40));
System.out.println("division of floating point numbers: "+obj.division(214.225f, 50.60f));
}
}
输出结果
division of integers: 2division of floating point numbers: 4.233695983886719
方法重载应遵循的规则
超载时,您需要牢记以下几点:
两种方法应在同一类中。
方法的名称应相同,但它们应具有不同的数量或参数类型。
如果名称不同,则它们将成为不同的方法,并且如果它们具有相同的名称和参数,则将引发编译时错误,提示“方法已定义”。
示例
class Test{public int division(int a, int b){
int result = a/b;
return result;
}
public double division (int a, int b){
double result = a/b;
return result;
}
}
编译时错误
OverloadingExample.java:6: error: method division(int, int) is already defined in class Testpublic static double division (int a, int b){
^
1 error
在覆盖中,如果两种方法都遵循以上两个规则,则它们可以-
有不同的返回类型。
示例
class Test{public int division(int a, int b){
int result = a/b;
return result;
}
public void division (float a, float b){
double result = a/b;
System.out.println("division of floating point numbers: "+result);
}
}
具有不同的访问修饰符-
class Test{public int division(int a, int b){
int result = a/b;
return result;
}
private void division (float a, float b){
double result = a/b;
System.out.println("division of floating point numbers: "+result);
}
}
可以抛出不同的异常-
class Test{public int division(int a, int b)throws FileNotFoundException{
int result = a/b;
return result;
}
private void division (float a, float b)throws Exception{
double result = a/b;
System.out.println("division of floating point numbers: "+result);
}
}
以上是 Java中对方法重载有哪些限制? 的全部内容, 来源链接: utcz.com/z/335049.html