본문 바로가기
study/JAVA

자바 생성자(constructor)와 오버로딩

by stilinski 2022. 4. 1.
728x90

  • 생성자란?
  1. 객체의 초기값 할당
  2. 생성자명은 클래스명하고 같다.
  3. 생성자는 클래스에서 1개 이상 존재한다.
  4. 클래스에 정의된 생성자가 없으면 JVM에서 기본 생성자를 제공한다.
    • [기본생성자]
      • 클래스의 접근제어자하고 같고 파라미터가 없는 구조이다.
      • public HandPhone(){}
      • 클래스에 정의된 생성자가 존재하면 JVM에서 기본 생성자를 제공해주지않는다.

 

 

클래스에 생성자는 한개이상 있어야 한다?

생성자인 ‘클래스이름()’을 선언하면 바이트코드에 기본적으로 생성자가 만들어짐.(우리눈에는 안보임)

그러나 클래스에 생성자가 하나라도 정의되어있으면 기본 생성자 제공 안함.

왼쪽 메인파일에서 생성자에 에러가 뜸.

 

 

 

오른쪽에 클래스 파일에 보이다시피 기본생성자이외에 따로 생성자를 정의할 경우 기본생성자가 없어지므로 기본 생성자를 꼭 따로 정의해주어야한다. 그러면 에러가 안뜨는 게 보임.

즉, 생성자를 따로 정의해서 쓸거면 기본생성자도 꼭 써줘야함.

 

 

정의된 생성자와 기본생성자를 모두 주석처리하니 에러가 없어짐.

생성자를 정의한 것을 없애니 기본생성자가 자동으로 생성이 되어서 정상적으로 작동함.

기본으로 생성되는 생성자는 JVM에 있음. 눈에보이지않음.

 

 

 

 

 

 

 

 

생성자 안에서 생성자 호출하기

 

 

 

 

728x90

댓글