1. 인터페이스 - 표준화의 시작
1. 인터페이스(interface)
- 인터페이스란?
- 인터페이스는 설계
표준
- 클래스가 따라야할 최소한!
의 공통 규칙을 정의하는 역할
2. 인터페이스를 사용하는 이유
- 인터페이스를 사용하는 이유
- 모든 설계에
표준이 있는 이유과 같다
- 개발자마다 서로 다른 방식으로 메서드를 만든다면 일관성 X
- 인터페이스를 활용해서 최소한의 규격을 정의
- 세부 구현은 각 클래스에 맡김
- 일관성을 유지하면서 클래스가 고유한 특색을 확장

class LuxuryCar {
void move() {
System.out.println("멋지게 이동합니다.");
}
void stop() {
System.out.println("멋지게 정지합니다.");
}
}
class SpeedCar {
void drive() {
System.out.println("빠르게 주행을 합니다.");
}
}
public class Main {
public static void main(String[] args) {
LuxuryCar car1 = new LuxuryCar();
SpeedCar car2 = new SpeedCar();
// ❌ 일관되지 않은 주행 명령어
car1.move();
car1.stop();
// ❌ 일관되지 않은 주행 명령어 + 멈출수 없음
car2.drive();
}
}
3. 인터페이스 적용
- 인터페이스를 잘 활용한 경우
- 인터페이스는 모든 클래스가 지켜야 할 최소한의 규칙을 정의
- 클래스에서
implements 키워드로 인터페이스를 활용
- 인터페이스를 구현한 클래스를
구현체 라고 한다

interface Car {
void drive();
void stop();
}
class LuxuryCar implements Car {
@Override
void drive() { // ✅ 인터페이스 규칙 준수
System.out.println("멋지게 이동합니다."); // 구현 내용은 자유롭습니다.
}
@Override
void stop() { // ✅ 인터페이스 규칙 준수
System.out.println("멋지게 정지합니다."); // 구현 내용은 자유롭습니다.
}
void charge() { // 🎉 CarA 만의 기능을 확장 가능합니다.
System.out.println("차량을 충전합니다");
}
}
class SpeedCar implements Car {
@Override
void drive() { // ✅ 인터페이스 규칙 준수
System.out.println("빠르게 이동합니다."); // 구현 내용은 자유롭습니다.
}
@Override
void stop() { // ✅ 인터페이스 규칙 준수
System.out.println("빠르게 정지합니다."); // 구현 내용은 자유롭습니다.
}
void autoParking() { // 🎉 CarB 만의 기능을 확장 가능합니다.
System.out.println("자동 주차 기능을 실행합니다.");
}
}
public class Main {
public static void main(String[] args) {
LuxuryCar car1 = new LuxuryCar();
SpeedCar car2 = new SpeedCar();
// ✅ 각 차량의 공통 기능
car1.drive();
car1.stop();
car2.drive();
car2.stop();
// ✅각 차량의 고유 기능
car1.charge();
car2.autoParking();
}
}
4. 인터페이스의 다양한 기능
- 인터페이스 다중 구현(multi-implementation)
implements키워드로 다수의 인터페이스 구현 가능
- 한 개의 클래스가 여러 인터페이스(
Animal, Flyable)를 구현한 경우 다중구현 이라고 칭함

- 인터페이스 다중상속(multi-inheritance)
extends 키워드로 상속을 구현

5. 인터페이스에 변수를 선언하는 경우
- 변수 선언시 형식에 관계 없이 자동으로 상수로 선언
pubilc static final로 선언
static으로 선언되기 때문에 구현체 없이 활용 가능
- 인터페이스는 표준의 역할 이므로 변수선은은 최소하하는 것이 좋다