티스토리 뷰

Java

자바 - super, super() 정리, 활용 예제

Kodong's blog 2025. 10. 27. 09:35

 

그다음으로는 super 키워드를 이용한 예제를 만들어보자.

일단 먼저 super 키워드의 의미부터 간단하게 정리하겠다.

 

1. super부모 클래스의 멤버에 접근 할 때
2. super()부모 클래스의 생성자를 호출하기 위해 사용

여기서 super() 키워드를 사용할 때 뭔가 작지만 큰 규칙이 많다.

 

일단은 각각을 활용한 예제를 만들어보자.

 

 

또x2 정리해보자. ⭐️⭐️⭐️⭐️⭐️

1. 자식 클래스에서 생성자 내부의 맨 첫 줄에 선언해야한다.
2. 자식 클래스에서 모든 생성자는 부모 클래스의 생성자를 포함하고 있어야한다.
- 하지만, 만약 자식 클래스의 생성자에 부모클래스의 생성자가 지정되어 있지 않다면( = super() 로 지정되어 있지 않다면), 컴파일러가 자동으로 부모 클래스의 기본 생성자를 호출한다. 
- 하지만, 만약 부모 클래스에 매개변수가 있는 생성자만 있고, 기본 생성자가 없어 기본 생성자를 호출할 수 없다면 에러가 난다.

예제로 이해해보자.

 

package main;

public class Application {
    public static void main(String[] args) {

        Child child = new Child("koDong");
        child.printStates();

    }
}

class Parent {

    public String name;
    
    public Parent(String name) {
        this.name = name;
    }

    String state1 = " tired ";
    String state2 = "happy ";
    String state3 = "angry";

}

class Child extends Parent {

    String states = super.name + super.state1 + super.state2 + super.state3;

    public Child(String name) {
        super(name);
    }

    public void printStates() {
        System.out.println(states);
    }

}

 

이 코드에서는 Child 클래스에서 Parent 클래스에 있는 생성자를 super(name)로 지정하여, 별로 문제가 되지 않는다.

하지만, 여기서 super를 사용하지 않는다면 어떻게 될까? 

 

 

There is no no-arg constructor available in 'main.Parent'

라고 에러가 난다. ( 해석하지만, Parent (= 부모클래스 )에 아무런 파라미터를 받지 않는 생성자 (= 기본 생성자 )가 없다는 의미이다 ). 

 

그렇다. 아까 말했듯이 자식 클래스에 부모클래스의 생성자를 super로 지정해주지 않는다면, 컴파일러는 부모클래스에 있는 기본 생성자를 호출한다. 

 

그냥 생성자에 매개변수가 없는 일반 클래스의 객체를 생성할 때, 해당 클래스의 생성자를 지정해주지 않으면, 해당 클래스의 객체를 생성할 때, 컴파일러가 자동으로 기본 생성자를 생성해주는 것과는 다른 느낌인거 같다. 

 

 

 

------------------------------------------------------------------------------

참고함 ↓

[Java] 자바 - super 및 super( )의 용도와 사용방법 :: KADOSHoly

 

[Java] 자바 - super 및 super( )의 용도와 사용방법

자바 - super 및 super( )의 용도와 사용방법 자바에서 상속하여 클래스를 사용할 경우 부모 클래스에 접근하기 위해서 사용되는 super와 super( )에 대해서 알아보도록 하겠습니다. 1. super 및 super( )의

kadosholy.tistory.com

 

[JAVA] Super() 키워드 예제 / Super 부모, 자식 — 개발 개맛집

 

[JAVA] Super() 키워드 예제 / Super 부모, 자식

글을 들어가기 전 1. 부모가 생성돼야 자식이 존재한다. 2. class가 인스턴스화 될 때 생성자가 실행되면서 객체의 초기화를 한다. 그때 자신의 생성자만 실행이 되는 것이 아니고, 부모의 생성자

study-easy-coding.tistory.com

 

 

 

 
 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함