Java中方法重载的不同方式

Java可以区分具有不同方法签名的方法。即该方法可以具有相同的名称,但具有不同的参数列表(即参数的数量,参数的顺序和参数的数据类型)。

  • 根据作为参数传递给参数的参数的数量和类型来区分重载的方法。
  • 您无法定义多个具有相同名称,顺序和参数类型的方法。这将是编译器错误。
  • 编译器在区分重载方法时不考虑返回类型。但是你不能声明两个具有相同签名和不同返回类型的方法。它会引发编译时错误。 如果两种方法具有相同的参数类型,但返回类型不同,则不可能。

为什么我们需要方法重载?

如果我们需要以不同的方式进行同样的操作,即针对不同的输入。在下面描述的例子中,我们正在为不同的输入执行加法操作。很难找到许多不同的有意义的单一动作名称。

不同的重载方法

方法重载可以通过改变:

  • 两种方法中的参数数目。
  • 方法参数的数据类型。
  • 方法参数的顺序。

方法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);
         
    }
}

输出:

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

当方法相同且返回类型不同时会发生什么?

编译器会给出错误,因为单独的返回值不足以让编译器找出它必须调用的函数。

只有两种方法具有不同的参数类型(因此它们具有不同的签名),则方法重载才是可能的。

// 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

 
转载请保留页面地址:https://www.breakyizhan.com/java/4116.html
扫描二维码添加微信 
  • ,每次淘宝领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘50元优惠券!添加微信后回复机械键盘即可领取!
    支持我们,就用微信淘宝!