[Java] super, 부모생성자

Hyo Kyun Lee·2022년 1월 31일
0

Java

목록 보기
21/66

1. super

자식클래스에서 사용하는 부모클래스 생성자 키워드로, 부모클래스 생성자를 초기화하기 위해 사용한다.

2. 구체적인 super의 구현방법

아래와 같이 최상위 부모 클래스인 Car와 내부적으로 생성자 Car()가 있다고 가정해보자.

public class Car{
	public Car(){
    ...
    }//Car 생성자
}

이때 부모 클래스인 Car의 자식 클래스 Truck를 선언해보고, 이에 대한 인스턴스를 생성 및 실행해보자.

public class Truck extends Car{
	public Truck(){
    }//Truck 생성자
}
public class TruckTest{
	public static void main(){
    	Truck t = new Truck();
    }
}

위 Trucktest를 실행하게 된다면 부모 클래스와 자식 클래스의 생성자가 모두 호출 및 생성된다.

즉, 객체(인스턴스)가 실행될 경우 먼저 초기화되는 생성자는 자신뿐만 아니라 부모까지 초기화되는데, 이때 super는 그러한 부모객체를 초기화하는데 반드시 필요한 키워드이다.

※위 Truck class에서 super() 키워드가 작성되지는 않았지만, 부모생성자가 기본 생성자 타입일 경우 기본적으로 적혀있는 키워드라 볼 수 있다.

3. super()의 명기

public class Car{
	public Car(int number){
    }
}

위와 같이 부모클래스의 생성자에 인수가 있는 경우로, 기본 생성자로 호출하지 못하는 경우라면 반드시 자식 클래스에 super() 키워드를 사용해야 한다.

public class Truck extends Car(){
	public Truck(){
    	super("0");
        ...
    }
}

위와 같이 자식 클래스에서 부모클래스 생성자를 직접 명기해주어야, 이후 자식인스턴스 생성 및 실행 간 오류가 발생하지 않는다.

public class Truck extends Car{
	public Truck(int number){
    	super(number);
    }
}

자식클래스의 인자를 활용하여 super 키워드 인자에 활용할 수도 있다.

0개의 댓글