[Java] super와 부모생성자

Kwon·2023년 10월 26일
0

Java

목록 보기
8/15

사진 출처 : https://namu.wiki/w/Git

Super와 부모생성자

super & 부모생성자

> class가 인스턴스화 될 때 생성자가 실행되면서 객체의 초기화를 한다. 그 때 생성자 자신만 실행되는 것이 아닌 부모의 생성자로 부터 시작된다.

Main

public class JavaExam {
    public static void main(String[] args) {
        Truck t = new Truck();
    }
}

class Car

public class Car {
    // 파일 필드명
    Car(String s) {
        System.out.println("Car의 기본 생성자입니다.");
    }
}

class Truck

public class Truck extends Car {
    Truck() {
        super("program");
        System.out.println("트럭의 기본 생성자입니다.");
    }
}

위의 코드들을 보면 Truck 클래스는 Car클래스를 상속받는다. Truck 클래스에서 super()은 부모 생성자를 의미하는데, 부모의 생성자를 임의로 호출하지 않으면, 부모 기본 class 생성자가 자동으로 생성된다.

그럼 super은 왜 필요할까?

Car클래스는 기본 생성자가 매개변수를 필요로 하고 있다. 만약 Truck 클래스에서 super(); 만 호출하게 되면 에러가 날 것이다. 부모 생성자는 매개변수로만 받기에 기본 생성자가 없다. 그래서 super(매개변수) 해줌으로써 부모 생성자를 호출해야 한다.

public class Car {
    // 파일 필드명
    Car(String s) {
        System.out.println("Car의 기본 생성자입니다.");
    }
    Car() {
        System.out.println("매개변수 없는 생성자 입니다.");
    }
}
public class Truck extends Car {
    Truck() {
        System.out.println("트럭의 기본 생성자입니다.");
    }
}

이번엔 super()이 없고 Car클래스에 기본 생성자가 선언됐다고 해보자. super()가 필요할까? 아니다.
부모 생성자에 기본 생성자가 있기에 자식이 상속 받기만 한다면 기본적으로 부모 생성자가 호출된다.

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글