💡 먼저 보면 좋을 자료
Code States | OOP 기초(2) - 필드와 메서드
생성자는 new 연산자를 통해서 인스턴스를 생성할 때 반드시 호출되며, 가장 먼저 실행된다.
생성자는 인스턴스 변수를 초기화 시키는 역할을 한다.
모든 클래스는 생성자가 반드시 존재
클래스는 하나 이상의 생성자를 가질 수 있음
public 클래스(매개변수) {}
클래스를 정의할 때 생성자 작성을 생략하면 컴파일러가 자동으로 기본 생성자를 생성
사용자가 생성자를 별도로 정의한 후 기본 생성자를 호출할 경우 컴파일 에러 발생
생성자를 명시적으로 선언하는 이유 : 객체를 다양하게 초기화 하기 위하여
// 기본 생성자 형태
public 클래스() {}
인스턴스를 생성하면서 생성자를 호출하면, 생성자에 의해 값을 초기화 할 수 있다.
초기화: 필드를 초기화하거나, 메소드를 호출하여 객체를 사용할 준비를 하는 것
생성자를 실행하지 않으면 클래스를 통해 객체를 만들 수 없음
new 연산자에 의해 생성자가 실행 → 힙 영역에 객체생성 → 객체의 주소 반환 → 객체의 주소를 클래스 타입 변수에 저장 → 객체에 접근할 때 이용
클래스명과 동일하게 정의
생성자 앞에는 접근 제어자만 위치할 수 있음 (static
, final
불가)
반환 값이 없음 → void, 반환 타입 작성하지 않음
상속 불가
매개변수를 달리하는 생성자를 여러 개 선언
다양한 객체 초기화를 위함
오버로딩 특징에 따라 매개변수의 타입과 개수가 달라야 함
생성자 오버로딩이 많아질경우 중복코드가 증가할 수 있기 때문에 다른 생성자를 호출할 수 있도록 하며, 그 때
this()
를 이용한다.
this()
코드는 생성자의 첫 줄에서만 허용한다.
코드 실행 순서는 this()
로 호출한 생성자의 실행 후 본 생성자로 돌아와 실행한다.
인스턴스 변수와 매개변수가 동일한 이름을 가질 때 구분해주기 위한 용도로 사용(필드명과 지역변수의 구분)
인스턴스 자기 자신을 가리킴
모든 메서드는 클래스의 객체를 가리키는 참조변수 this
를 가짐
컴파일러가 this.
를 추가해주기 때문에 생략이 가능