[JAVA] 상속 (2) - super, 생성자

:-)·2022년 4월 12일
0

☕ JAVA

목록 보기
2/15
post-thumbnail

📝 super 키워드

  • 자식 클래스가 부모 클래스를 가르키는 예약어

super

  • 멤버변수와 지역변수의 이름이 같을 때 this를 붙여서 구별했듯이
    부모 클래스와 자식 클래스의 멤버변수 이름이 같은 때 super를 붙여서 구별한다.

super()

  • 부모 클래스의 생성자이다.
    즉, super()는 부모의 생성자를 호출하는데 사용된다.



📝 상속 관계에서의 생성자

  • 생성자는 상속되지 않는다.
  • 하지만 생성자가 정의된 클래스는 객체 생성을 위해서 생성자 파라미터를 반드시
    전달받아야 하기 때문에,
    파라미터를 갖는 생성자가 정의된 클래스를 상속 받게 되면 에러가 발생된다.

부모 생성자 강제 호출

  • 생성자가 정의된 클래스를 상속받는 경우에는 자식 클래스의 생성자를 통해서
    부모 생성자를 강제로 호출해야 한다.
  • 부모의 생성자를 호출하는 방법은 super() 키워드를 메서드 이름으로
    사용하는 것이다.


// 부모 클래스

class Parent {
	public Parent(String str) {
		System.out.println("부모 생성자 호출 : " + str);
	}
}

// 자식 클래스

class Child extends Parent {
	public Child(String str) {
		super(str);
		System.out.println("자식 생성자 호출");
	}
}
// Main 클래스

public class Main {

	public static void main(String[] args) {
		Child c = new Child("부모 생성자");
	}
}
👉 실행 결과

부모 생성자 호출 : 부모 생성자
자식 생성자 호출


📙 생성자 정리

  • 부모 클래스의 생성자는 상속되지 않고, 자식 클래스로 객체를 생성할 때
    자동적으로 부모의 기본 생성자로 호출
  • 부모 생성자가 매개변수를 갖고 있다면 자식 클래스를 객체화 할 때 자동으로
    호출되지 않는다.
  • 따라서 자식 생성자에서 명시적으로 부모 생성자를 호출해야 한다.
  • 이때 사용되는 키워드가 super()이다.
    🔥 super()를 사용할 때 자식 생성자의 첫 줄에 위치해야 한다. 🔥

0개의 댓글