Java中方法重载的不同方法有哪些()

先决条件:重载
Java可以用不同的方法签名来区分方法。也就是说,在同一个类中,方法可以有相同的名称,但是有不同的形参列表(即形参的数量、形参的顺序和形参的数据类型)。

  • 重载方法根据作为参数传递给方法的参数的数量和类型进行区分。
  • 你不能定义多个具有相同名称, 顺序和参数类型的方法。这将是编译器错误。
  • 区分重载方法时, 编译器不考虑返回类型。但是你不能声明具有相同签名和不同返回类型的两个方法。它将引发编译时错误。
    如果两个方法都具有相同的参数类型, 但返回类型不同, 则不可能。(Java SE 8 Edition, §8.4.2)
为什么我们需要方法重载?
如果我们需要以不同的方式(即针对不同的输入)执行相同类型的操作。在下面描述的示例中, 我们对不同的输入进行加法运算。很难为单个动作找到许多不同的有意义的名称。
进行重载方法的不同方法
方法重载可以通过更改来完成:
  • 两种方法中的参数数量。
  • 方法的参数的数据类型。
  • 方法的参数顺序。
方法1:通过更改参数的数量。
import java.io.*; class Addition{//adding two integer values. public int add( int a, int b){int sum = a+b; return sum; }//adding three integer values. public int add( int a, int b, int c){int sum = a+b+c; return sum; }}class GFG { public static void main (String[] args) {Addition ob = new Addition(); int sum1 = ob.add( 1 , 2 ); System.out.println( "sum of the two integer value :" + sum1); int sum2 = ob.add( 1 , 2 , 3 ); System.out.println( "sum of the three integer value :" + sum2); } }

【Java中方法重载的不同方法有哪些()】输出如下:
sum of the two integer value :3 sum of the three integer value :6

方法2:通过更改参数的数据类型
import java.io.*; class Addition{//adding three integer values. public int add( int a, int b, int c){int sum = a+b+c; return sum; }//adding three double values. public double add( double a, double b, double c){double sum = a+b+c; return sum; } }class GFG { public static void main (String[] args) {Addition ob = new Addition(); int sum2 = ob.add( 1 , 2 , 3 ); System.out.println( "sum of the three integer value :" + sum2); double sum3 = ob.add( 1.0 , 2.0 , 3.0 ); System.out.println( "sum of the three double value :" + sum3); } }

输出如下:
sum of the three integer value :6 sum of the three double value :6.0

方法3:通过更改参数的顺序
import java.io.*; class Geek{public void geekIdentity(String name, int id){System.out.println( "geekName :" + name + " " + "Id :" + id); }public void geekIdentity( int id, String name){System.out.println( "geekName :" + name + " " + "Id :" + id); } }class GFG { public static void main (String[] args) {Geek geek = new Geek(); geek.geekIdentity( "Mohit" , 1 ); geek.geekIdentity( "shubham" , 2 ); } }

输出如下:
geekName :Mohit Id :1 geekName :shubham Id :2

当方法签名相同且返回类型不同时会发生什么?
编译器将给出错误, 因为仅返回值不足以使编译器找出必须调用的函数。更多细节:Java语言规范:第8.4.2节。
仅当两个方法具有不同的参数类型(因此, 它们具有不同的签名)时, 方法重载才是可能的。
//Example to show error when method signature is same //and return type is different. import java.io.*; class Addition { //adding two integer value. public int add( int a, int b) {int sum = a+b; return sum; }//adding three integer value. public double add( int a, int b) { double sum = a+b+ 0.0 ; return sum; }}class GFG { public static void main (String[] args) { Addition ob = new Addition(); int sum1 = ob.add( 1 , 2 ); System.out.println( "sum of the two integer value :" + sum1); int sum2 = ob.add( 1 , 2 ); System.out.println( "sum of the three integer value :" + sum2); } }

输出如下:
16: error: method add(int, int) is already defined in class Addition public double add(int a, int b) ^ 1 error

相关文章:
  • Java中的方法重载和Null错误
  • 我们可以在Java中重载或重写静态方法吗?
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读