构造方法重载Java

时间:2014-12-10 18:38:13

标签: java constructor overloading

非常简单的Rational class I尝试创建。

如果在主要方法中,有人调用Rational(2),那么num = 2den = 1

如果有人呼叫Rational(2, 4),则num = 2den = 4

这是我的代码:

public class Rational {

    public long num;    
    public long den;

    Rational(long arg1, long arg2){

        num = arg1;    
        den = arg2;

    }

    Rational(long arg1){

        long x = 1;
        Rational(arg1, x);  //Rational(long, long) is undefined for type Rational

    }

}

我已经评论了错误消息,我不知道如何修复。

有什么建议吗?

2 个答案:

答案 0 :(得分:7)

您需要使用this关键字,但它必须是构造函数中的第一个语句,因此在此之前无法定义x

this(arg1, 1); 

答案 1 :(得分:2)

this(arg1, 1);

使用this关键字调用其他构造函数,类似于使用super的方式。它也必须是构造函数体中的第一个语句。由于它是第一个,因此您必须在示例中更改传递x的方式。