产品方法重载(与上次询问的人员相同)

时间:2017-11-18 09:27:02

标签: java overloading

我正在研究这个问题并且无法做到这一点,并且不确定我是否真的知道实际上是什么方法重载。任何人都可以解释它是什么(因为我在网上找到的资源不是很好),并可能解决我所犯的错误?

问题是:重载产品方法以允许将其他类型的值相乘:

两个双打 一个int和一个double 一个double和一个int 三个整数 三个双打

我收到错误说: - 从double到int的可能有损转换(第13,16,19行) - 产品2 /产品3已经定义 - Method期望类型为int,int和type int,int,int(第17行)

tenant-schemas

谢谢你们

2 个答案:

答案 0 :(得分:3)

方法重载就在您想要使用相同的类命名方法时,但签名是不同的。

当我说签名不同时,参数类型可能不同,例如:

public int multiplyProduct(int one, int two) {}

//We are overloading right here as we already defined a multiplyProduct above

public int multiplyProduct(long one, long two){}

或者它可以只是参数的数量不同:

public int multiplyProduct(long one, long two, long three){}

在上面的示例中,您有一个名为Product的类:

class Product {

  public int multiplyProduct(int one, int two) {}

  public int multiplyProduct(int one, long two) {}

  public int multiplyProduct(long one, long two){}

  public int multiplyProduct(long one, long two, long three){}

  public int multiplyProduct(double one, double two) {}

}

现在你要调用你所使用的方法:

//To call the multiply(int one, int two)
new Product().multiply(1,1)

//To call the multiply(int one, long two)
new Product().multiply(1,1L)

//To call the multiply(long one, long two, long three)
new Product().multiply(1L,1L,1L)

//To call the multiply(double one, double two)
new Product().multiply(1.0,1.0)

关于错误,您只需要创建一个接受两个double并返回double的新方法:

public void run() {

    int intValue = 5;
    double doubleValue = 2.5;

    int product1 = product(intValue, intValue);
    System.out.println(product1);

    // Use method overloading to define methods
    // for each of the following method calls
    double product2 = product(doubleValue, doubleValue);
    System.out.println(product1);

    int product3 = product(intValue * intValue, intValue);
    System.out.println(product1);

    double product4 = product(intValue, doubleValue);
    System.out.println(product1);

    double product5 = product(doubleValue, intValue);
    System.out.println(product1);

    double product6 = product(doubleValue * doubleValue, doubleValue);
    System.out.println(product1);
}

public int product(int one, int two) {
    return one * two;
}

public double product(double one, double two) {
    return one * two;
}

答案 1 :(得分:1)

方法重载就在您想要使用相同的类命名方法时,但签名是不同的。 不同的签名意味着参数是不同类型的OR 参数以不同的顺序给出或参数的数量不同。

给定代码显示所有类型的方法重载:

    public class Product extends ConsoleProgram {

    public void run(){

        int intValue = 5;
        double doubleValue = 2.5;

        int product1 = product(intValue, intValue);
        System.out.println(product1);

        // Use method overloading to define methods 
        // for each of the following method calls

        double product1 = product(doubleValue, doubleValue);
        System.out.println(product1);

        int product3 = product(intValue, intValue, intValue);
        System.out.println(product3);

        double product2 = product(intValue, doubleValue);
        System.out.println(product2);

        double product2 = product(doubleValue, intValue);
        System.out.println(product2);

        double product3 = product(doubleValue, doubleValue, doubleValue);
        System.out.println(product3);


        public int product(int one, int two)
        {
            return one * two;
        }

        //different types of parameters

        public double product(double one, double two)
        {
            return one * two;
        }

        //different number of parameters

        public int product(int one, int two, int three)
        {
            return one * two * three;
        }

        public double product(int one, double two)
        {
            return one * two;
        }

        //different order of parameters

        public double product(double one, int two)
        {
            return one * two;
        }

        public double product(double one, double two, double three)
        {
            return one * two * three;
        }
    }
    }

谢谢