Java中方法重载的确切需要

Ran*_*jan 2 java overloading

由于我已经找到了很多关于方法重载的例子和结论,但我仍然在实时混淆我们如何使用它.

首先,方法重载是一个类级活动意味着在该类中我们正在重载一个具有相同名称但不同参数的方法

void sum(int a,int b){System.out.println(a+b);}  
void sum(double a,double b){System.out.println(a+b);} 
Run Code Online (Sandbox Code Playgroud)

在我们调用这个方法之后

public static void main(String args[]){  
ClassName obj=new ClassName ();  
obj.sum(10.5,10.5);  
obj.sum(20,20);  
}  
Run Code Online (Sandbox Code Playgroud)

假设不是这个,我将采取两个单独的方法,如

void method1(int a,int b){System.out.println(a+b);}  
void method2(double a,double b){System.out.println(a+b);} 
Run Code Online (Sandbox Code Playgroud)

我将这两种方法称为上述相同的方法

public static void main(String args[]){  
ClassName obj=new ClassName (); 
obj.method1(20,20);   
obj.method2(10.5,10.5);  
} 
Run Code Online (Sandbox Code Playgroud)

在两种方法的情况下,活动都是相同的,那么在这种情况下,重载/多态的确切需要是什么.

在某处我发现方法重载增加了程序的可读性,任何人都可以指定只因为这行我们正在使用方法重载.

谢谢.

Era*_*ran 9

假设我们在Java中没有方法重载.

代替 :

System.out.println("String");
System.out.println(5);
System.out.println('c');
...
Run Code Online (Sandbox Code Playgroud)

我们会有 :

System.out.printlnString("String");
System.out.printlnInt(5);
System.out.printlnChar('c');
...
Run Code Online (Sandbox Code Playgroud)

甚至更糟:

System.out.println1("String");
System.out.println2(5);
System.out.println3('c');
...
Run Code Online (Sandbox Code Playgroud)

两种选择都会使代码的可读性降低.

  • 更不用说制作伪"可选"参数,例如`foo(Bar)`和`foo(Bar,Baz)` (2认同)