是否可以通过创建1个对象而不是多个对象来访问Java构造函数

时间:2019-03-13 18:32:48

标签: java constructor constructor-overloading

让我解释一下我要在此构造函数中实现的目标。如您所见,我有3个构造函数,要获取每个构造函数的输出,我必须创建3个对象。是否可以通过仅创建1个对象而不是创建3个对象来获取所有3个构造函数的输出来获得3个输出?如果不可能的话,请有人解释为什么不这样做或是否有可能,然后告诉我如何完成。谢谢

public class Op{ 

public Op(String a){ 
    System.out.println("Default"); 
} 

public Op(String a, int b){ 
    System.out.println("String and Int"); 
} 

public Op(String a, String c, int b){ 
    System.out.println("String, String & Int");
}


public static void main(String args[]){ 
Op d1 = new Op("lol"); 
Op d2 = new Op("Hi",21); 
Op d3 = new Op("Bye","Cube",47);
} 

}

2 个答案:

答案 0 :(得分:2)

您可以使用this(...)

将构造函数调用到其他构造函数中
public class Op {
    public Op(String a) {
        System.out.println("Default");
    }

    public Op(String a, int b) {
        this(a);
        System.out.println("String and Int");
    }

    public Op(String a, String c, int b) {
        this(a, b);
        System.out.println("String, String & Int");
    }

    public static void main(String args[]) {
        Op d3 = new Op("Bye", "Cube", 47);
    }
}

输出为

Default
String and Int
String, String & Int

您也可以采用另一种方法,也可以调用super(...)构造函数来调用超类的构造函数之一

答案 1 :(得分:0)

使用构造函数链接。.
 公共类Op {

Project > Quick Switch Project

}