JX405기_비트/Java

Day05-2 인터페이스 상속

_하루살이_ 2023. 1. 16. 16:23

IAnimal 인터페이스 생성

package day0113;

public interface IAnimal {
    // 필드, 생성자 선언 불가능 : 실제로 생성이 될 수 있는 것은 만들지 못함
    public void makeSound();
        // 메소드는 생성 가능 : 메소드를 정의하는 공간을 만들면 에러
    public void move();
    public void eat();

    // 부모클래스에서 메소드를 정의하는 것이 아니라 자식 클래스에서 메소드를 Override 해야함



}

Rabbit 자식 클래스 생성

package day0113;

public class Rabbit implements IAnimal {
    // 인터페이스에서는 반드시 상속받는 인터페이스에 있는 메소드를 자식클래스에서 정의해주어야함

    @Override
    public void makeSound() {
        System.out.println("토끼 토끼");
    }

    @Override
    public void move() {
        System.out.println("깡총 깡총");
    }

    @Override
    public void eat() {
        System.out.println("풀을 뜯어먹습니다.");
    }

    // 상속 받는 클래스가 고유 메소드를 갖는 것을 선호하진 않음
    public void swim(){
        System.out.println("용궁에 갑니다.");
    }
}

Cat 자식 클래스 생성

package day0113;

public class Cat implements IAnimal{

    @Override
    public void makeSound() {
        System.out.println("냐옹");
    }

    @Override
    public void move() {
        System.out.println("슬금슬금");
    }

    @Override
    public void eat() {
        System.out.println("생선을 먹습니다.");
    }
}

실행

package day0113;


public class Ex01Inheritance {
    public static void main(String[] args) {
        
        // IAnimal iAnimal = new IAnimal(); 에러 : 인터페이스는 객체를 실체화 할 수 없음 => 자식클래스로 상속받아 사용
        IAnimal iAnimal = new Rabbit();
        showSample(iAnimal);

        IAnimal cat = new Cat();
        showSample(cat);


    }


    // 인터페이스에서 다형성 사용
    public static void showSample(IAnimal iAnimal){
        iAnimal.makeSound();
        iAnimal.move();
        iAnimal.eat();
    }

}