에뛰드 블로그
article thumbnail
Published 2023. 5. 5. 18:18
상속 - 생성자(Constructor) BE/JAVA

🤷‍♀️ 생성자란?

❤️ 생성자 의미

객체가 생성될 때 자동으로 호출되는 특수 목적의 메소드(멤버함수)로 객체의 초기화를 위해 사용됩니다.

 

❤️ 생성자 특징

○ 생성자의 이름은 클래스 이름과 동일해야 합니다.

○ 생성자는 다른 멤버함수(메소드)와는 다르게 리턴 타입이 없습니다.

○ 생성자는 객체가 생성될 때 자동으로 한번 호출됩니다.

○ 매개변수 조건에 따라 여러개를 작성할 수 있습니다. (오버로딩)

○ 클래스에 최소 1개가 있어야 하며, 없을 경우 컴파일러가 기본생성자를 자동으로 생성합니다.

 

⛄ 서브클래스/슈퍼클래스의 생성자 호출, 실행

서브 클래스 객체가 생성될 때 서브 클래스의 생성자와 슈퍼 클래스의 생성자가 모두 실행됩니다.

다만 수행 역할이 다릅니다.

서브 클래스의 생성자는 생성된 객체 속에 들어있는 서브 클래스의 멤버 초기화나 필요한 초기화를 수행하고, 슈퍼 클래스의 생성자는 생성된 객체 속에 있는 슈퍼 클래스의 멤버 초기화나 필요한 초기화를 각각 수행합니다.

 

💜 new( )

○ 슈퍼클래스 생성자와 서브 클래스 생성자 모두 실행됩니다.

○ 슈퍼 클래스 생성자   서브 클래스 생성자 호출

○ 슈퍼 클래스 생성자   서브 클래스 생성자 실행

 

 

🧸 생성자 선택

상속 관계에서의 생성자

   슈퍼 클래스와 서브 클래스 각각 여러 생성자 작성이 가능합니다.

🌼서브 클래스 생성자 작성 원칙

서브 클래스 생성자에서 슈퍼 클래스 생성자를 하나 선택하여 작성해야 합니다.

🌼서브 클래스에서 슈퍼 클래스의 생성자를 선택하지 않은 경우

컴파일러가 자동으로 슈퍼 클래스의 기본 생성자를 선택하여 컴파일 합니다.

🌼서브 클래스에서 슈퍼 클래스 생성자 선택 방법

super( )를 사용하여 작성합니다.

 

서브 클래스의 생성자가 슈퍼 클래스의 생성자를 선택하지 않은 경우의 예시입니다.

 

슈퍼 클래스에 기본 생성자가 없어 오류 난 경우의 예시입니다.
서브 클래스의 생성자가 슈퍼 클래스의 생성자를 선택하지 않은 경우의 예시입니다.

🎡 super( )

서브 클래스에서 명시적으로 슈퍼 클래스의 생성자 선택 호출합니다.

   super(parameter);의 구조로 선택하면 됩니다.

   인자를 이용하여 슈퍼 클래스의 적당한 생성자를 호출합니다.

  반드시 서브 클래스 생성자 코드의 제일 첫 라인에 와야합니다.

 

profile

에뛰드 블로그

@MISU 미수

매일 1px씩 성장하는 개발자입니다! 성장하면서 알게 된 저의 지식을 공유하기 위한 블로그입니다

검색 태그