코딩/Java

자바 - 인터페이스에 default 메소드 사용 이유

Junoni 2024. 11. 24. 05:26
반응형

1. 구현 코드가 있는 메소드 작성 가능

interface Car {
    void startEngine();
}

위와 같이 자바에서는 인터페이스 내부에 메소드 작성이 가능하지만 메소드에는 구현 코드는 존재할 수 없다.

왜냐하면 인터페이스의 모든 메소드는 추상적이기 때문에 메소드를 구현하지는 못한다.

 

 

interface Car {
    default void startEngine() {
        System.out.println("시동을 건다");
    }
}

하지만 default 키워드를 메소드 앞에 붙이면 해당 메소드를 실행할 수 있는 구현 코드를 작성할 수 있다.

이제 Car를 구현하는 클래스는 startEngine() 메소드를 사용이 가능하다.

 

 

2. 인터페이스에 새로운 메소드 추가 시,  기존 코드 유지보수에 용이

interface Car {
}

class Genesis implements Car {
}

class Morning implements Car {
}

만약 Car 인터페이스에 autoParking()이라는 메소드를 추가한다면 GenesisMorning 클래스 각각 autoParking() 메소드를 반드시 구현해야 한다.

 

 

interface Car {
    default void autoParking() {
        System.out.println("자동 주차");
    }
}

class Genesis implements Car {
}

class Morning implements Car {
}

하지만 default 메소드를 추가한다면, GenesisMorning 두 클래스 모두 autoParking() 메소드 구현할 필요 없이 바로 접근이 가능하고 필요하다면 autoParking() 메소드를 오버라이딩하여 메소드를 수정할 수도 있다.

반응형