public Fraction (int a1 , int b1) {
a = a1;
b = b1;
}
Fraction fr = new Fraction (new Fraction(1,1), new Fraction(2,2) )
有没有办法让这项工作?
答案 0 :(得分:6)
可以像[...]
一样调用这个[...]
当然不是。 Java是一种静态类型语言,此构造函数需要int
种类型:
public Fraction (int a1 , int b1)
但是,在此行中,您为其提供了Fraction
种类型:
new Fraction (new Fraction(1,1), new Fraction(2,2))
由于编译器告诉你的原因,它不会起作用。 Fraction
上没有与指定参数类型匹配的构造函数。
(该行上的两个内部构造函数调用将起作用。外部一个是失败的那个。)
有没有办法让这项工作?
取决于你如何定义构造函数你可以在你的类中定义两个构造函数:
public Fraction (int a1 , int b1)
{
// ...
}
public Fraction (Fraction a1 , Fraction b1)
{
// ...
}
然后,您可以使用任一构造函数构造Fraction
对象的实例,这将使该行有效。你在第二个构造函数中做的做什么取决于你。
答案 1 :(得分:3)
要使其工作,请再创建一个接受两个Fraction
参数的重载构造函数:
public Fraction(Fraction f1, Fraction f2) {
this(f1.a*f2.b, f1.b*f2.a);
}
答案 2 :(得分:2)
只有在编写2重载的构造函数时才可能:
public Fraction (int a1 , int b1)
和
public Fraction (Fraction f1 , Fraction f2)