Study/Java
Java - 상속_super는 무엇인가?
서한성
2022. 7. 6. 15:05
super?
부모 클래스의 생성자나 메소드를 호출할 때 사용한다.
override한 메소드에서 super()을 사용하면 부모 클래스의 메소드를 그대로 호출한다는 뜻이 된다.
예시)
부모 클래스
public class Animal { // 부모 클래스
void sound() { System.out.println("소리를 낸다."); }
}
자식 클래스(강아지, 호랑이, 고양이)
// 강아지
public class Dog extends Animal {
@Override
void sound() {
System.out.println("강아지는 멍멍");
super.sound();
}
} // super 사용
// 호랑이
public class Tiger extends Animal {
@Override
void sound() {
System.out.println("호랑이는 어흥");
super.sound();
}
} // super 사용
// 고양이
public class Cat extends Animal {
@Override
void sound() {
System.out.println("고양이는 야옹");
}
} // super 사용안함
위와 같이 강아지, 호랑이는 울음소리 뒤에 "소리를 낸다"를 출력하는 부모 클래스 Animal의 메소드를 super를 통해 호출했다.
main 메소드를 통해 실행해보면
// 실행
public class AnimalExercise {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound();
System.out.println("\n");
Animal cat = new Cat();
cat.sound();
System.out.println("\n");
Animal dog = new Dog();
dog.sound();
System.out.println("\n");
Animal tiger = new Tiger();
tiger.sound();
System.out.println("\n");
}
}

위와 같이 고양이는 부모 클래스의 메소드가 실행되지 않았다.
super를 통해 부모 클래스의 메소드를 호출한 강아지와 호랑이만 "소리를 낸다."가 출력되었다.
또한, super()를 울음소리 출력문 뒤에 넣었더니 울음소리 뒤에 출력되는 것을 볼 수 있다.
super는 부모 클래스 호출