两个构造函数调用之间的区别

时间:2015-04-05 07:40:04

标签: java class constructor call

第一个queue

class queue
{
    private char q[];
    queue(int size)              //constructor 1
    {
        q=new char[size];
    }
    queue(char array[])          //constructor 2
    {
        this(array.length);      //call to constructor 1
    }
}

第二个queue

class queue
{
    private char q[];
    queue(int size)              //constructor 1
    {
        q=new char[size];
    }
    queue(char array[])          //constructor 2
    {
        queue(array.length);      //call to constructor 1
    }
}

在第一个queue课程中,call to constructor 1工作正常,

但在第二个queue课程中,call to constructor 1显示错误。

上述两个contstructor调用之间有什么区别?

(请不要注意代码的相关性)

1 个答案:

答案 0 :(得分:4)

从Java中同一个类中的另一个构造函数调用类中的构造函数的唯一方法是使用this。调用queue(array.length);在Java中是非法的。编译器将查找名为queue的方法,该方法接受一个int参数,因为这样的方法不存在,就会出现编译错误。