Java 다형성 - 인터페이스 활용
지금까지 배웠던 다형성을 이용하여 활용해보도록 한다.
다음 주어진 그림을 보고 구현한다.

- AbsAnimal 추상 클래스이다.
- sound() 동물의 울음 소리를 추상 메소드로 제공한다.
- move() 추상 메소드가 아닌 상속을 목적으로 사용한다.
- Fly 인터페이스로 정의되어 있다.
- Bird 날 수 있도록 fly 메소드를 구현한다.
예제 코드
코드를 작성하여 실행 결과를 살펴보자
AbsAnimal.java
package diamond;
public abstract class AbsAnimal {
public abstract void sound();
public void move() {
System.out.println("걷기");
}
}
Fly.java
package diamond;
public interface Fly {
void fly();
}
Cat.java
package diamond;
public class Cat extends AbsAnimal {
@Override
public void sound() {
System.out.println("야옹");
}
}
Dog.java
package diamond;
public class Dog extends AbsAnimal {
@Override
public void sound() {
System.out.println("멍멍");
}
}
Bird.java
package diamond;
public class Bird extends AbsAnimal implements Fly{
@Override
public void sound() {
System.out.println("짹짹");
}
@Override
public void fly() {
System.out.println("짹짹이 날아오르기");
}
}
작성한 클래스가 정상적으로 호출되는지 살펴보도록 한다.
AnimalMain.java
package diamond;
public class AnimalMain {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
Bird bird = new Bird();
soundAnimal(cat);
soundAnimal(dog);
soundAnimal(bird);
flyAnimal(bird);
}
public static void soundAnimal(AbsAnimal animal) {
System.out.println("== 동물 울음 소리 ==");
animal.sound();
}
public static void flyAnimal(Fly animal) {
System.out.println("== 동물 날기 ==");
animal.fly();
}
}
실행 결과
== 동물 울음 소리 ==
야옹
== 동물 울음 소리 ==
멍멍
== 동물 울음 소리 ==
짹짹
== 동물 날기 ==
짹짹이 날아오르기
인터페이스 상속과 추상화로 정상적으로 출력한 것을 볼 수 있다.