Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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构造函数_Java_Constructor_Constructor Overloading - Fatal编程技术网

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

是否可以通过创建一个对象而不是多个对象来访问Java构造函数,java,constructor,constructor-overloading,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)

让我来解释一下我试图在这个构造函数中实现什么。如您所见,我有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);
} 

}

您可以使用此

输出是

Default
String and Int
String, String & Int
你也可以反过来做,你也可以调用一个超级。。。调用超类的构造函数之一的构造函数使用构造函数链接。。 公开课{

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

}

这是在修改构造函数还是不修改构造函数的情况下发生的?对于参数较少的构造函数调用参数较多的构造函数来说并不罕见,因为有些值被设置为某个默认值。您可以随意处理不安全的类,这是非常不受鼓励的,但不修改构造函数是否可行@格洛盖特
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);
}