Могу ли я вызвать конструктор по умолчанию из параметризованного конструктора внутри открытого класса в Java?

Я хочу вызвать конструктор по умолчанию из параметризованного конструктора внутри публичного Java-класса.

Могу ли я достичь этого?

Ответы на вопрос(6)

вы можете иметь в виду конструктор без параметров. Если это так, вы можете использовать следующий код:

public class MyClass {
   // no params constructor 
   public MyClass() {
      ...
   }

   // parametrized constructor
   public MyClass(int p1, String p2) {
       this();
   }
}

Надеюсь это поможет

 Dawood ibn Kareem12 окт. 2012 г., 07:22
Стоит отметить, чтоthis(); должна быть первой строкой параметризованного конструктора - это нене работает, если вы ставите другие вещи на первое место.
Решение Вопроса

this(); в первой строке параметризованного конструктора, и он будет вызывать ваш конструктор по умолчанию. Убедитесь, что у вас есть конструктор по умолчанию, так как компилятор не предоставит его, если вы объявите параметризованный конструктор.

Да, ты можешь

public YourClass() {
    public YourClass() { super();}
    public YourClass(int x) { this();}
}

при условии, что у вас тот же конструктор аргументов. Это победилот работа

public YourClass() {
    public YourClass(int x, int y) { this(); } // compiler error here
    public YourClass(int x) { super(); }
}

Замечания:супер() вызывает супер-конструктор (в данном случае класс Object, потому что MyClass неявно расширяет Object, а класс Object не имеет конструктора arg), который соответствует тому же числу аргументов.

этот() вызывает конструктор текущего класса, который соответствует тому же числу аргументов.

например: new Test ();) или this () ;. просто Test () запрещен, потому что это не метод класса.

package org.gpowork.test;

public class Test {
    private String field;
    private Long time = 0L; 
    public Test(){
        this.time = System.currentTimeMillis();
        System.out.println("Default constructor. "+this.time);
    }
    public Test(String field){
            this();
        Test instance = new Test();
        this.field = field;
    }
    public static void main(String[] args){
        System.out.println("start...");
        Test t1 = new Test();
        System.out.println("-------");
        Test t2 = new Test("field1");
    }
}

которыйs неявно предоставляется компилятором. И компилятор победилНе предоставляйте его, если вы вводите любой конструктор с аргументами.

В этом случае вы должны явно определить конструктор без аргументов (который, кстати, не является стандартным, потому чтоне предоставляется компилятором), например, ,public MyClass() { }

И вы можете вызвать его из другого конструктора какthis();, который должен быть первым оператором в конструкторе, где он 'зовут.

вызвать конструктор по умолчанию, как только выМы создали конструктор, который принимает аргументы. Вы'Вам нужно будет создать конструктор без аргументов, чтобы сделать вызов из параметризованного конструктора.

 pratZ12 окт. 2012 г., 08:05
Да, это будет работать. Вы создалиTest() безошибочный конструктор. Это то, что я говорил. Компилятор неПредоставить конструктор по умолчанию без аргументов, когда вы создали конструктор arg. Конструктор по умолчанию - это тот конструктор, который вы не используетеЯ должен написать в классе явно. Компилятор сделает всю работу за вас. Попробуйте свой код безTest() конструктор, это 'выдам ошибку.
 psisodia12 окт. 2012 г., 07:52
Я пробовал это & это работает: имя строки; Test () {System.out.println ("Добро пожаловать»); } Test (String input) {this (); this.name = input; System.out.println (this.name); } public static void main (String [] args) {new Test ("Привет"); }

Ваш ответ на вопрос