ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 생성자
    카테고리 없음 2024. 8. 22. 14:27
    자식 클래스의 생성자에서는 반드시 부모 클래스의 생성자를 호출해야한다
    • 자식 클래스가 부모 클래스를 상속 받을 때, 부모 클래스의 field와 method를 포함한 메모리 구조를 초기화 해야되기 때문이다
    • 부모 생성자를 호출하는 방식에는 2가지가 있다
      • 자동 호출: 자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자를 호출하지 않으면, 자바 컴파일러가 자동으로 부모 클래스의 기본 생성자를 호출하는 것
      • 명시적 호출: 자식 클래스의 생성자에서 super() 키워드를 사용하여 특정 부모 클래스 생성자를 호출하는 것

     

    자동 호출

    public class Main {
      public static void main(String[] args) {
        Child child = new Child();
      }
    }
    
    class Parent {
      public Parent() {
        System.out.println("Parent 생성자 호출");
      }
    }
    
    class Child extends Parent {
      public Child() {
        // super(); // 컴파일러가 자동으로 추가
        System.out.println("Child 생성자 호출");
      }
    }

    • Child 클래스에서 super()을 명시적으로 호출하지 않았지만, 컴파일러가 자동으로 super()를 삽입하여 부모 클래스의 생성자를 먼저 호출함
    • Parent 클래스에 기본 생성자가 선언되어있지 않으면 오류 발생

     

    명시적 호출

    public class Main {
      public static void main(String[] args) {
        Child child = new Child();
      }
    }
    
    class Parent {
      public Parent(String message) {
        System.out.println("Parent 생성자 호출: " + message);
      }
    }
    
    class Child extends Parent {
      public Child() {
        super("Hello from Child"); // 부모 생성자를 명시적으로 호출
        System.out.println("Child 생성자 호출");
      }
    }

    • 자식 클래스 생성자에서 super()를 이용하여 부모 클래스의 생성자를 명시적으로 호출함
    • super() 호출은 자식 클래스 생성자의 첫번째 라인에 위치해야 함
Designed by Tistory.