我正在研究这个问题并且无法做到这一点,并且不确定我是否真的知道实际上是什么方法重载。任何人都可以解释它是什么(因为我在网上找到的资源不是很好),并可能解决我所犯的错误?
问题是:重载产品方法以允许将其他类型的值相乘:
两个双打 一个int和一个double 一个double和一个int 三个整数 三个双打我收到错误说: - 从double到int的可能有损转换(第13,16,19行) - 产品2 /产品3已经定义 - Method期望类型为int,int和type int,int,int(第17行)
tenant-schemas
谢谢你们
答案 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;
}
}
}
谢谢