[java] 추상 클래스와 인터페이스를 사용하여 다형성을 이용하는 예시 코드

이번 포스트에서는 자바에서 추상 클래스와 인터페이스를 사용하여 다형성을 이용하는 예시 코드를 살펴보겠습니다. 다형성은 객체지향 프로그래밍에서 중요한 개념 중 하나로, 같은 타입으로 다양한 기능을 사용할 수 있게 해줍니다.

다음은 추상 클래스와 인터페이스를 활용한 예시 코드입니다.

// 추상 클래스
abstract class Animal {
    abstract void sound();
}

// 인터페이스
interface Jumpable {
    void jump();
}

class Dog extends Animal implements Jumpable {
    @Override
    void sound() {
        System.out.println("멍멍!");
    }

    @Override
    public void jump() {
        System.out.println("강아지가 뛰어올라요!");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("야옹!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();

        dog.sound();  // 멍멍!
        cat.sound();  // 야옹!

        if (dog instanceof Jumpable) {
            ((Jumpable) dog).jump();  // 강아지가 뛰어올라요!
        }
    }
}

위 코드에서는 Animal 추상 클래스와 Jumpable 인터페이스를 정의했습니다. Animal 클래스는 추상 클래스로 선언되어 있으며, sound() 메서드의 구현은 하위 클래스에게 맡겨두었습니다. Jumpable 인터페이스는 jump() 메서드의 구현을 요구합니다.

Dog 클래스는 Animal 추상 클래스를 상속받고, Jumpable 인터페이스를 구현하였습니다. Cat 클래스는 Animal 추상 클래스를 상속받고, Jumpable 인터페이스를 구현하지 않았습니다.

Main 클래스에서는 Animal 타입의 변수를 생성하고, DogCat 객체를 초기화하여 할당합니다. 이후, sound() 메서드를 호출하여 다형성을 확인할 수 있습니다. 또한, dog 객체가 Jumpable 인터페이스를 구현했는지 조건문을 통해 확인하고, 형변환을 통해 jump() 메서드를 호출하는 코드도 포함되어 있습니다.

이 예시 코드를 실행하면 다형성을 이용하여 여러 동물의 소리를 들을 수 있고, 강아지만 뛰어오르는 동작을 확인할 수 있습니다.

다형성은 코드의 재사용성과 유연성을 높여주는 중요한 개념입니다. 추상 클래스와 인터페이스를 사용하여 다형성을 구현하면 코드의 확장성과 유지보수성을 향상시킬 수 있습니다.

참고자료