2015-05-21 5 views
2

Если я вызываю другого конструктора того же класса, используя это ключевое слово. Будет ли он создавать два объекта?Будет ли цепочка конструкторов создавать несколько объектов на Java?

Если да, то какой объект будет активен в примере ниже:

Class Sample { 
    int a; 
    String b; 

    Sample() { 
     this("Hello"); 
     a=10; 
    } 

    Sample(String temp) { 
     b = temp; 
    }  
} 

Я хочу знать поведение конструктора цепочки. Пожалуйста, объясните, как это работает?

ответ

8

Нет, цепочка конструкторов не создает дополнительный экземпляр, он просто выполняет логику цепного конструктора, позволяя повторно использовать его код.

+0

Спасибо за ввод. Таким образом, это означает, что он аналогичен вызову другого метода. – Raashith

+1

@ user3232754 Это не совсем то же самое. Вызов другого конструктора должен быть первой строкой в ​​вашем конструкторе, а другой конструктор вызывает неявный конструктор суперкласса. Кроме того, вы можете сделать этот вызов только из конструктора. Если бы это было похоже на любой другой метод, вы могли бы назвать его любым способом. – Eran

2

Нет, this("Hello"); здесь позвоню Sample(String temp) конструктор, он не будет создавать еще один объект.

+0

Спасибо, это :) – Raashith

0

Как уже упоминалось, вы получите только один объект, каждый из которых инициализирует один и тот же объект.

Лучше посмотреть на себя:

public class Sample { 
    int a; 
    String b; 

    Sample() { 
     this("Hello"); 
     a=10; 
     System.out.println("B: "+ hashCode()); 
    } 

    Sample(String temp) { 
     b = temp; 
     System.out.println("A: "+ hashCode()); 
    } 

    public static void main(String[] args) { 
     new Sample(); 
    } 

} 

Обратите внимание, что вызов методы экземпляра на не полностью инициированный объекте могут вызвать проблемы, если вы пытаетесь получить доступ неинициализированных полей так шагать тщательно.

 Смежные вопросы

  • Нет связанных вопросов^_^