Можно ли получить доступ к конструктору Java, создав 1 объект вместо нескольких объектов - PullRequest
0 голосов
/ 13 марта 2019

Позвольте мне объяснить, что я пытаюсь достичь в этом конструкторе.Как вы видите, у меня есть 3 конструктора, и чтобы получить выходные данные каждого конструктора, мне нужно создать 3 объекта.Можно ли получить 3 выхода, только создав 1 объект вместо 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 ]

2 голосов
/ 13 марта 2019

Вы можете вызывать конструкторы в другие конструкторы, используя 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(...), вызывающий один из конструкторов суперкласса

0 голосов
/ 13 марта 2019

Использовать конструктор цепочки ..
открытый класс 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);
}

}

...