💡 인터페이스(Interface)란?
간단히 말해, 인터페이스는 '무엇(What)'을 해야 하는지를 나타내는 일종의 작업지시서 역활이다.
인터페이스(Interface)의 특징
✔️ 메서드 명세 : 메서드들의(매개변수 타입, 반환 타입)만을 선언하고 구현은 포함하지 않음
추상 클래스와 유사하지만 추상 클래스와는 달리 멤버변수와 일반 메서드를 가질 수 없다.
✔️ 구현 강제 : 인터페이스에서 선언한 모든 메서드를 반드시 구현해야한다.
✔️ 다중 상속지원 : 클래스는 하나의 클래스만 상속받을 수 있지만, 인터페이스는 여러 개 구현 가능함으로 재사용성이 높아짐.
📌 주의할 점
✔️ 생성자를 가질 수 없음 : 인터페이스는 객체를 생성할 수 없으므로 생성자가 필요하지 않다.
인터페이스를 구현한 클래스의 생성자를 통해 객체를 생성할 수 있음
✔️ 메서드와 상수만을 가짐 : 인터페이스는 추상 메서드, 디폴트 메서드, 정적 메서드와 같은 메서드들을 포함할 수 있다.
또한 public static final로 선언된 상수도 가질 수 있음
✔️ 구현(implementation) : 클래스가 인터페이스를 구현(implement)한다고 표현함. 이는 클래스가 인터페이스에 선언된 모든 메서드를 구현해야 한다는 의미다
interface Flyable {
void fly();
}
class Bird implements Flyable {
public void fly() {
System.out.println("Bird is flying");
}
}
class Airplane implements Flyable {
public void fly() {
System.out.println("Airplane is flying");
}
}
public class Main {
public static void main(String[] args) {
Flyable bird = new Bird();
bird.fly(); // "Bird is flying" 출력
Flyable airplane = new Airplane();
airplane.fly(); // "Airplane is flying" 출력
}