\

super - 생성자


<aside> 🪧

설명


필수 규칙


예제


package super2;

public class ClassA {

    public ClassA() {
        System.out.println("ClassA 생성자");
    }
}
--------------------
package super2;

public class ClassB extends ClassA {

    public ClassB(int a) {
        super();
        System.out.println("ClassB 생성자 a = " + a);
    }

    public ClassB(int a, int b) {
        super();
        System.out.println("ClassB 생성자 a= " + a + " b= " + b);
    }
}

* 위 코드처럼 상속을 받으면 생성자의 첫 줄에 super(...)를 사용해서 부모 클래스의
  생성자를 호출해줘야 함
* 부모 클래스의 생성자가 기본 생성자(파라미터가 없는 생성자)인 경우에는 super()를
  생략 가능
* 기본 생성자를 많이 사용하기 때문에 편의상 이런 기능을 제공

------------------------
package super2;

public class ClassC extends ClassB {

    public ClassC() {
        super(10, 20);
		    System.out.println("ClassC 생성자");
    }
}

하지만 ClassB를 보면 생성자 한 개는 int a를 받고 나머지는 int a, inb를 받는 것을
볼수 있듯이 ClassB를 상속받은 ClassC에는 super(...) 안에 값을 넣어줘야하고
생략을 할수 없음.
-------------------------
package super2;

public class Super2Main {
    public static void main(String[] args) {
        ClassC classC = new ClassC();
    }
}

출력
ClassA 생성자
ClassB 생성자 a= 10 b= 20
ClassC 생성자

동작

image.png

1~3 동작.

4~6 동작.

</aside>

this(…)와 함께 사용


<aside> 🔋

설명


예제


image.png

image.png

</aside>