
자바 기본 문법 – 상속 – 3 – super 키워드 사용
소제목: super 키워드란?
“super” 키워드는 자바에서 상속 관계에 있는 클래스에서 부모 클래스의 멤버에 접근하기 위해 사용되는 특별한 키워드입니다. 상속을 통해 파생된 자식 클래스에서 부모 클래스의 필드, 메서드 또는 생성자를 호출하고 사용할 때 “super” 키워드를 사용할 수 있습니다. 이는 자식 클래스가 부모 클래스의 기능을 확장하면서도 부모 클래스의 멤버를 재사용할 수 있는 강력한 도구입니다.
예시: 부모 클래스와 자식 클래스 예시
// 부모 클래스
public class Animal {
protected String sound;
public Animal(String sound) {
this.sound = sound;
}
public void makeSound() {
System.out.println(sound);
}
}
// 자식 클래스
public class Cat extends Animal {
private String name;
public Cat(String sound, String name) {
super(sound); // super 키워드를 사용하여 부모 클래스의 생성자 호출
this.name = name;
}
public void introduce() {
System.out.println("저는 고양이 " + name + "입니다.");
}
}
위의 예시에서 Animal
클래스는 부모 클래스로서 동물의 소리를 출력하는 makeSound
메서드를 가지고 있습니다. Cat
클래스는 Animal
클래스를 상속받아 고양이의 이름을 소개하는 introduce
메서드를 추가로 가지고 있습니다. Cat
클래스의 생성자에서 super(sound)
를 사용하여 부모 클래스의 생성자를 호출하고, name
필드를 초기화하고 있습니다.
상속을 통한 부모 클래스 멤버 접근
상속 관계에서 자식 클래스는 부모 클래스의 멤버에 접근하기 위해 super
키워드를 사용할 수 있습니다. super
키워드는 두 가지 주요 용도로 사용됩니다.
-
부모 클래스의 생성자 호출: 자식 클래스의 생성자에서
super
키워드를 사용하여 부모 클래스의 생성자를 명시적으로 호출할 수 있습니다. 이는 자식 클래스가 부모 클래스의 필드를 초기화하거나 부모 클래스의 특정 로직을 실행해야 할 때 유용합니다. -
부모 클래스의 멤버 접근: 자식 클래스에서 부모 클래스의 멤버(필드, 메서드)에 접근할 때
super
키워드를 사용할 수 있습니다. 이를 통해 부모 클래스의 멤버를 재사용하거나 오버라이딩한 자식 클래스의 메서드에서 부모 클래스의 메서드를 호출할 수 있습니다.
예시: super 키워드 사용 예시
public class Dog extends Animal {
private int age;
public Dog(String sound, int age) {
super(sound); // 부모 클래스의 생성자 호출
this.age = age;
}
@Override
public void makeSound() {
super.makeSound(); // 부모 클래스의 makeSound 메서드 호출
System.out.println("멍멍!");
}
public void showAge() {
System.out.println("저는 " + age + "살입니다.");
}
}
위의 예시에서 Dog
클래스는 Animal
클래스를 상속받아 개의 나이를 출력하는 showAge
메서드를 추가로 가지고 있습니다. Dog
클래스의 makeSound
메서드에서 super.makeSound()
를 사용하여 부모 클래스의 makeSound
메서드를 호출하고, 그 뒤에 개의 소리인 “멍멍!”을 출력하고 있습니다.
super 키워드를 사용하는 이유
“super” 키워드는 상속을 통해 부모 클래스의 멤버를 활용하고 확장하는 데에 있어서 중요한 역할을 합니다. 이를 통해 코드의 재사용성이 증가하며, 상속 관계에서 부모 클래스의 메서드를 호출하여 기능을 확장하거나 오버라이딩할 수 있습니다. 또한, 부모 클래스와 자식 클래스의 관계를 명확히 표현하고 코드의 가독성을 높이는 데에도 도움을 줍니다.
주의해야 할 점
-
super
키워드는 반드시 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하기 위해 사용되어야 합니다. 이를 생략하면 컴파일러가 자동으로 부모 클래스의 기본 생성자를 호출하게 되는데, 부모 클래스에 기본 생성자가 없을 경우 컴파일 오류가 발생합니다. -
super
키워드를 사용하여 부모 클래스의 생성자를 호출하는 코드는 자식 클래스의 생성자 첫 줄에서 작성되어야 합니다. 그렇지 않을 경우 컴파일 오류가 발생합니다. -
super
키워드는 부모 클래스의 멤버에만 접근할 수 있으며, 자식 클래스의 멤버에는 접근할 수 없습니다. -
super
키워드는 생성자나 메서드 내에서만 사용할 수 있습니다. -
super
키워드를 통해 부모 클래스의 메서드를 호출할 때, 해당 메서드가 오버라이딩되었다면 자식 클래스의 메서드가 호출됩니다.
자바의 상속에서 super
키워드는 중요한 개념으로, 부모 클래스와 자식 클래스 간의 관계를 유지하며 기능을 확장하는 데 사용됩니다. 이를 활용하여 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 조금 더 많은 사람들이 자바를 배우고 응용할 수 있도록 도움이 되었으면 좋겠습니다. 계속해서 자바 공부와 블로그 포스팅 활동을 화이팅하세요!