• Tags , ,
  •         
  • www.breakyizhan.com
  •    

    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