728x90
출처 : 자바의 정석 291p~
생성자란?
인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.
생상자도 메서드이지만 고유의 역할이 있기 때문에 메서드와는 다른 선언 조건을 갖고 있다.
- 생성자의 이름은 클래스의 이름과 같아야 한다.
- 생성자는 리턴 값이 없다.
new와 헷갈리지 않기!
생성자라는 이름때문에 생성자의 역할을 잘못 알기 쉽다.
Card라는 클래스를 정의하고 main 메서드에서 Card 클래스의 인스턴스를 생성하려면
Card c = new Card();
이와 같이 선언할 것이다.
여기서 연산자 new가 인스턴스를 생성하는 역할을 한다. 생성자가 인스턴스를 생성하는 것이 아니다!
위 코드가 실행되는 과정을 보면
1. 연산자 new에 의해 heap 영역에 Card 클래스의 인스턴스가 생성
2. 생성자 Card()가 호출되어 수행
3. 연산자 new의 결과로, 생성된 Card인스턴스의 주소가 반환되어 참조 변수 c에 저장.
생성자는 모든 클래스에 반드시 하나 이상 있다!
자바에서 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다.
그러나 생성자가 없어도 에러가 발생하지 않는 것을 경험해봤을 것이다.
컴파일러가 클래스에 정의된 생성자가 없을 때 기본 생성자를 자동으로 추가해주기 때문이다.
728x90
'Programming > Java' 카테고리의 다른 글
[Java] - 추상클래스와 추상 메서드를 통해 본 OOP 추상화 (0) | 2021.02.26 |
---|---|
[Java] - 다형성이란? (0) | 2021.02.26 |
[Java] - super란? super()란? (0) | 2021.02.26 |
[Java] - 오버라이딩이란? + 오버로딩과 헷갈리지 않기 (0) | 2021.02.26 |
[Java] - 상속관계와 포함관계 (0) | 2021.02.25 |
댓글