Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用构造函数的this()调用同一类中的另一个构造函数_Java_Constructor - Fatal编程技术网

在Java中使用构造函数的this()调用同一类中的另一个构造函数

在Java中使用构造函数的this()调用同一类中的另一个构造函数,java,constructor,Java,Constructor,测试代码的一小部分如下: class Teacher { private String title; String name = "A"; int age = 20; Teacher (String title) { //System.out.println(name); this(name,age,title); } Teacher (String name, int age, String title) {

测试代码的一小部分如下:

class Teacher {
    private String title;
    String name = "A";
    int age = 20;

    Teacher (String title) {
        //System.out.println(name);
        this(name,age,title);
    }

    Teacher (String name, int age, String title) {
        System.out.println("OK");
    }
}

public class Test {
    public static void main (String[] args) {
        Teacher teacher1 = new Teacher("John");
        Teacher teacher2 = new Teacher("Mike",25,"TA");
    }
}

如上所述,我注释了
System.out.println(name)在调用超类构造函数之前不能引用name(age)。
但是,我注释了
这个(name,age,title)
,这意味着我只使用了
System.out.println(name)。错误消失了。因此,我认为
名称
年龄
已初始化,并获得值
A
20
。也就是说,
这个(名字、年龄、头衔)
实际上是
这个(“a”,20,“John”)
我不知道原理。需要您的帮助。

Java文档中说

如果存在,则另一个构造函数的调用必须是构造函数中的第一行


Java文档说

如果存在,则另一个构造函数的调用必须是构造函数中的第一行


Java文档说

如果存在,则另一个构造函数的调用必须是构造函数中的第一行


Java文档说

如果存在,则另一个构造函数的调用必须是构造函数中的第一行


此/超级构造函数调用必须是链接构造函数调用时的第一条语句。有关详细信息,请参阅。

此/super构造函数调用必须是链接构造函数调用时的第一条语句。有关详细信息,请参阅。

此/super构造函数调用必须是链接构造函数调用时的第一条语句。有关详细信息,请参阅。

此/super构造函数调用必须是链接构造函数调用时的第一条语句。有关详细信息,请参见。

原则是

如果存在,则必须首先调用另一个构造函数 构造函数中的行

参考:

使用
这个
关键字可以调用其他构造函数。 当您注释掉第一条语句时,构造函数调用成为第一行,这是合法的。

原则是

如果存在,则必须首先调用另一个构造函数 构造函数中的行

参考:

使用
这个
关键字可以调用其他构造函数。 当您注释掉第一条语句时,构造函数调用成为第一行,这是合法的。

原则是

如果存在,则必须首先调用另一个构造函数 构造函数中的行

参考:

使用
这个
关键字可以调用其他构造函数。 当您注释掉第一条语句时,构造函数调用成为第一行,这是合法的。

原则是

如果存在,则必须首先调用另一个构造函数 构造函数中的行

参考:

使用
这个
关键字可以调用其他构造函数。
当您注释掉第一条语句时,构造函数调用将成为第一行,这是合法的。

调用
this()
时,您无法访问
name
age
字段。这些字段尚未初始化。如果希望name默认为“A”,age为20,请直接将值作为参数输入
this()

将编译以下类:

class Teacher {
    private String title;
    String name;
    int age;

    Teacher (String title) {
        this("A",20,title);
    }

    Teacher (String name, int age, String title) {
        this.name = name;
        this.age = age;
        System.out.println("OK");
    }
}

调用
this()
时,无法访问
name
age
字段。这些字段尚未初始化。如果希望name默认为“A”,age为20,请直接将值作为参数输入
this()

将编译以下类:

class Teacher {
    private String title;
    String name;
    int age;

    Teacher (String title) {
        this("A",20,title);
    }

    Teacher (String name, int age, String title) {
        this.name = name;
        this.age = age;
        System.out.println("OK");
    }
}

调用
this()
时,无法访问
name
age
字段。这些字段尚未初始化。如果希望name默认为“A”,age为20,请直接将值作为参数输入
this()

将编译以下类:

class Teacher {
    private String title;
    String name;
    int age;

    Teacher (String title) {
        this("A",20,title);
    }

    Teacher (String name, int age, String title) {
        this.name = name;
        this.age = age;
        System.out.println("OK");
    }
}

调用
this()
时,无法访问
name
age
字段。这些字段尚未初始化。如果希望name默认为“A”,age为20,请直接将值作为参数输入
this()

将编译以下类:

class Teacher {
    private String title;
    String name;
    int age;

    Teacher (String title) {
        this("A",20,title);
    }

    Teacher (String name, int age, String title) {
        this.name = name;
        this.age = age;
        System.out.println("OK");
    }
}


它可能与问题无关,但您应该将这两个构造函数声明为
public
。重载时,您必须先调用构造函数,然后再调用任何其他构造函数。Wild
new Teacher(“John”)
将他的头衔设置为john而不是他的名字这可能与问题无关,但您应该将两个构造函数声明为
public
。重载时,您必须先调用构造函数,然后再调用任何其他内容。是否
新教师(“john”)
将他的头衔设置为john而不是他的名字这可能与问题无关,但您应该将两个构造函数声明为
public
。重载时,您必须先调用构造函数,然后再调用任何其他内容。是否
新教师(“john”)
将他的头衔设置为john而不是他的名字这可能与问题无关,但您应该将两个构造函数声明为
public
。重载时,您必须先调用构造函数,然后再调用任何其他内容。是否
新教师(“john”)将他的标题设置为john而不是nameTHX,我认为这是因为您定义的每个类都继承自Object类。当我使用this()函数调用另一个构造函数时,该构造函数中的super(name,age)函数无法为var name执行,并且age尚未初始化。换句话说,在执行超类的构造函数之前,子类的变量不能被初始化,所以你不能称之为(名字,年龄,“教授”)。THX,我认为这是因为你定义的每个类都继承自对象类。当我使用this()函数调用另一个构造函数时,该构造函数中的super(name,age)函数不能为var name和age hav执行