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는 부모 클래스 호출