两个构造函数调用之间的区别
difference between the two constructor calls
第一个queue
class
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
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
class 中,call to constructor 1
工作正常,
但是在第二个 queue
class, call to constructor 1
显示错误。
以上两个构造函数调用有什么区别?
(请不要注意代码的相关性)
从 Java 中同一 class 中的另一个构造函数调用 class 中的构造函数的唯一方法是使用 this
。调用 queue(array.length);
在 Java 中是非法的。编译器将寻找一个名为 queue
的方法,它接受一个 int 参数,由于这样的方法不存在,你会得到一个编译错误。
第一个queue
class
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
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
class 中,call to constructor 1
工作正常,
但是在第二个 queue
class, call to constructor 1
显示错误。
以上两个构造函数调用有什么区别?
(请不要注意代码的相关性)
从 Java 中同一 class 中的另一个构造函数调用 class 中的构造函数的唯一方法是使用 this
。调用 queue(array.length);
在 Java 中是非法的。编译器将寻找一个名为 queue
的方法,它接受一个 int 参数,由于这样的方法不存在,你会得到一个编译错误。