코딩/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()이라는 메소드를 추가한다면 Genesis와 Morning 클래스 각각 autoParking() 메소드를 반드시 구현해야 한다.
interface Car {
default void autoParking() {
System.out.println("자동 주차");
}
}
class Genesis implements Car {
}
class Morning implements Car {
}
하지만 default 메소드를 추가한다면, Genesis와 Morning 두 클래스 모두 autoParking() 메소드 구현할 필요 없이 바로 접근이 가능하고 필요하다면 autoParking() 메소드를 오버라이딩하여 메소드를 수정할 수도 있다.
반응형