추상 클래스와의 차이

🔴  : 추상 클래스 / 🔷  : 인터페이스

추상 클래스 인터페이스
기본 개념 물려 받는 것 (혈통/가문/계열) 장착하는 것 (학위/자격증)
다중 적용 불가 (모회사는 하나 뿐) 가능 (학위는 여럿 딸 수 있음)
상속관계에 의한 제한 있음 없음
생성자 가짐 가지지 않음
메소드 구상, 추상 모두 가능 추상 메소드 (abstract 안 붙여도 됨), default 구상 메소드, 클래스 메소드
필드 모두 가능 상수만 가능 (final 명시 불필요)
적용 연산자 extends implements

📁 ex01

☕ Mammal.java

public abstract class Mammal {
    public boolean hibernation;

    public Mammal(boolean hibernation) {
        this.hibernation = hibernation;
    }
}

☕ Reptile.java

public abstract class Reptile {
    public boolean isColdBlooded () {
        return true;
    }
}

☕ Bird.java

public abstract class Bird {
    public void reproduce () {
        System.out.println("알 낳기");
    }
}

☕ Hunter.java

public interface Hunter {
    String position = "포식자"; // ⭐️ final - 초기화하지 않을 시 오류
    void hunt ();
}