// 인터페이스 선언
interface Animal {
    void sound();
}

// 클래스 정의
class Dog implements Animal {
    @Override
    public void sound() {
        System.out.println("멍멍!");
    }

    public void wagTail() {
        System.out.println("꼬리 흔들!");
    }
}

public class Main {
    public static void main(String[] args) {
        // Dog 객체 생성
        Dog dog = new Dog();

        // 상위 유형의 변수에 하위 객체의 참조값 할당
        Animal animal = dog;

        // 인터페이스 메소드 호출
        animal.sound(); // Dog의 sound() 메소드가 호출됨(동적 바인딩)

        // 하위 유형의 메소드는 호출 불가능 (Animal 인터페이스에는 없음)
        // animal.wagTail(); // 컴파일 에러 발생
    }
}