생성자란? 클래스의 객체(인스턴스)가 생성될 때 자동으로 호출되는 메소드이다.
생성자는 메소드와 똑같이 호출 시 내부를 수행한다.
하지만 객체를 생성해주고 호출 시 new 키워드와 함께 쓰이며
생성된 객체의 주소값을 자동으로 리턴하기 때문에 메소드라고 부르지 않는다.
(우리가 원하는 값으로 리턴을 할 수 없다.)
생성자 선언
클래스를 선언하면 기본적으로 생성자 하나를 만들어주고 우리 눈에는 보이지 않는다.
이러한 생성자를 기본 생성자라고 하며,
만약 직접 생성자를 선언하게 되면 기존에 있던 기본 생성자는 사라지게 된다.
그래서 기본 생성자가 필요할 경우 기본생성자도 함께 적어줘야 한다.
//생성자 (클래스 안에 생성된다)->(Car 클래스 안에 있음)
public Car(String model, String color, int price){
this.model = model;
this.color = color;
this.price = price;
}
Car mycar = new Car("Ferrari", "Red", 70000);
생성자의 목적
- 클래스의 필드를 똑같이 복사해서 메모리에 할당하고, 할당된 필드의 주소값을 돌려받기 위함 / 객체화의 목적
- 호출 시 내부의 내용을 수행하기 위함 / 초기화의 목적
this
◆ 객체 구별용 변수
클래스 선언시 내부적으로 선언되어 생성된다.
클래스 영역에서 한 번의 메소드 선언으로 여러 객체를 다루어야 한다.
만약 메소드 내에서 해당 객체의 필드를 사용하고자 할 때 어떤 객체의 필드인지를 알수 없다.
따라서 객체에 마침표를 찍고 필드에 접근하거나 어떤 객체를 생성중일때는 현재 접근한 그 객체를 this 변수가 받는다.
결과적으로 클래스 선언시 내부에서 this.필드명으로 접근하면 여러 객체를 하나의 메소드에서 구분하여 다룰 수 있게 된다.
'Backend > Java' 카테고리의 다른 글
[Java] 기초정리 13. 클래스 배열(객체 배열) - 클래스 배열 선언, 사용 (0) | 2024.08.20 |
---|---|
[Java] 기초정리 12. 다형성(Polymorphism) - 오버로딩, 오버라이딩 (0) | 2024.08.10 |
[Java] 기초정리 12. 클래스 - 클래스 선언, 사용 (0) | 2024.08.08 |
[Java] 기초정리 11. 메소드 - 메소드 선언, 사용 (0) | 2024.08.07 |
[Java] 기초정리 10. 문자열 메소드 - split() / indexOf() / charAt() / replace() / substring() / substring() / trim() / length() (0) | 2024.08.06 |