JAVA

[Java] 클래스와 인터페이스의 활용

songsua 2024. 12. 7. 01:40

클래스 상속과 인터페이스 구현을 함께 사용하는 예를 알아보자.

 

AbstractAnimal 은 추상클래스다

sound() 는 동물의 소리를 내기 위한 추상 메서드를 제공한다.

move() 은 동물의 이동을 표현하기위한 메서드이다. 하지만 추상 메서드는 아니며, 상속하여 사용할 것이다

Fly 는 인터페이스 이다. Bird Chicken 은 날 . 수있는 동물이다. fly() 메서드를 구현 해야한다.

 

Main

package poly.basic.ex6;

public class SoundFlyMain {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Bird bird = new Bird();
        Chicken chicken = new Chicken();


        SoundAnimal(dog);
        SoundAnimal(bird);
        SoundAnimal(chicken);

        FlyAnimal(bird);
        FlyAnimal(chicken);
        
    }

    private static void SoundAnimal(AbstractAnimal animal) {
        System.out.println("동물소리 내기 시작");
        animal.sound();
        System.out.println("동물소리 내기 종료");
    }

    //Fly 인터페이스가 있으면 사용 가능
    private static void FlyAnimal(Fly flying) {
        System.out.println("새가 날기 시작");
        flying.fly();
        System.out.println("새가 날기 종료");
    }
}
package poly.basic.ex6;
//추상클래스로 생성한다
public abstract class AbstractAnimal {
    public abstract void sound();
    public void move() {
        System.out.println("동물이 이동합니다");
    }
}
package poly.basic.ex6;

public interface Fly {
    void fly();
}
package poly.basic.ex6;

public class Dog extends AbstractAnimal {
    @Override
    public void sound() {
        System.out.println("Dog sound");
    }
}
package poly.basic.ex6;

public class Bird extends AbstractAnimal implements Fly {
    @Override
    public void fly() {
        System.out.println("Bird flying");
    }

    @Override
    public void sound() {
        System.out.println("Bird sound");



    }
}
package poly.basic.ex6;

public class Chicken extends AbstractAnimal implements Fly{
    @Override
    public void fly() {
        System.out.println("Chicken flying");
    }

    @Override
    public void sound() {
        System.out.println("Chicken sound");


    }
}

 

 

 

'JAVA' 카테고리의 다른 글

[Java] 불변객체  (0) 2025.01.09
[JAVA] Object 다형성  (0) 2025.01.08
[Java] 인터페이스  (1) 2024.12.06
[Java] 추상클래스  (0) 2024.12.06
[Java] 다형성의 활용  (0) 2024.12.05