🔴 : 추상 클래스 / 🔷 : 인터페이스
추상 클래스 | 인터페이스 | |
---|---|---|
기본 개념 | 물려 받는 것 (혈통/가문/계열) | 장착하는 것 (학위/자격증) |
다중 적용 | 불가 (모회사는 하나 뿐) | 가능 (학위는 여럿 딸 수 있음) |
상속관계에 의한 제한 | 있음 | 없음 |
생성자 | 가짐 | 가지지 않음 |
메소드 | 구상, 추상 모두 가능 | 추상 메소드 (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 ();
}