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

标签 java class constructor call

第一个队列

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
    }
}

第二个队列

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类中,调用构造函数1工作正常,

但是在第二个queue类中,调用构造函数1显示错误。

上面两个构造函数调用有什么区别?

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

最佳答案

在 Java 中,从同一类中的另一个构造函数调用类中的构造函数的唯一方法是使用 this。调用queue(array.length);在Java中是非法的。编译器将查找名为 queue 的方法,该方法采用 int 参数,并且由于不存在这样的方法,因此您会收到编译错误。

关于java - 两个构造函数调用之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29455182/

相关文章:

构造函数中的 C++ std::vector

java - 按值的字母顺序排列 HashMap

java - 如何使用 GUI 实现建模应用程序

java - 非法操作 - 我应该抛出异常吗?

php - 如何使用准备好的语句制作适当的 mysqli 扩展类?

c++ - 旧 vector 是否被清除?如果是,如何以及何时?

java - 在构造函数中定义变量/字段类型,它是如何完成的?

java - 使用 mySQL 从 Spring Boot 启动时,Javers 给出重复的键名称 'jv_global_id_owner_id_fk_idx'

c++ - 将类成员数组组合到单个数组时性能受到影响

C++ 通过引用传递类中的函数