Language/Java

[Java] 생성자(Constructor), this.

한비Skyla 2024. 6. 4. 11:32

📚 문제상황

1. this 를 쓰는 상황, 안 쓰는 상황이 뭔지 모르겠다. 

2. 초기화를 하는 건 뭐지? 

 

💡 생성자

인스턴스가 생성될 때 (new로 불러올 때 ) 호출되는 "인스턴스 초기화 메서드"

* 연산자 new 가 인스턴스를 생성하는 것. 생성자가 인스턴스를 생성하는 것은 아니다. 

https://velog.io/@jungnoeun/%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-%EB%B3%80%EC%88%98%EC%9D%98-%EC%B4%88%EA%B8%B0%ED%99%94 

 

생성자와 변수의 초기화

생성자는 인스턴스가 생성될때 호출되는 "인스턴스 초기화 메서드" 이다. 변수의 초기화 작업에 주로 사용된다.인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다.메서드처럼 클래스

velog.io

 

 

💡매개변수가 있는 생성자, this

class Car {
	String color;
    String gearType;
    int door;
    
    //매개변수가 없는 생성자
    Car() {}
    
    //매개변수가 있는 생성자
    Car(String c, String g, int d) {
    	color = c;
        gearType = g;
        door = d;
    }
}

- this 를 쓰는 이유 : 생성자의 매개 변수로 선언된 변수의 이름이 인스턴스 변수의 이름과 같으면, 

                                이름으로는 서로 구별이 안됨. 이때 인스턴스 변수 앞에 this를 써주는 것. 

                                인스턴스 자기 자신을 가리킴. 

 

💡변수의 초기화

https://paulyun.tistory.com/30

 

자바의 필드와 생성자

필드는 객체의 속성을 저장하는 변수입니다. 필드는 클래스 내부에 존재하며 클래스의 라이프 싸이클을 같이 합니다. 필드는 클래스에서 굉장히 중요한 부분이고 클래스를 이해하는데 필수적

paulyun.tistory.com

클래스로부터 객체가 생성될 때 필드는 '기본 초기값'으로 자동 설정됨. 

다른 값으로 초기화를 하고 싶다면 2가지 방법 존재. 

 

 

- 필드 초기화 : 필드를 선언할 때, 초기값 선언. 동일한 클래스로부터 생성되는 객체들은 모두 같은 값을 가짐. 

 

 

- 생성자 초기값: 객체 생성 시점에 외부에서 제공되는 다양한 값들로 초기화를 하고 싶으면 생성자에서 초기화. 

 

🔎 해결 

- 이거는 생성자가 아님. 그냥 초기화를 위한 매서드 

- 생성자는 class 랑 이름이 무족권 같아야 함.. 

- 생성자인데 초기화를 같이 함. 객체를 생성하면서 인스턴스 변수 자체를 초기화하는 것. 

1. This 를 쓰는 상황, 안 쓰는 상황이 뭔지 모르겠다.

- 변수 자체를 초기화하고 싶으면 this. 를 써라.

 

- Shop shop = new shop (shopName) >>>> shopName 이 무조건 들어오도록 하는 shop 생성자인 것임.

 

 

* 생성자를 만들 때 무조건 초기화를 하는 것이 아니라 null 값을 안 만들게 하려는 것.