728x90
- 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
- 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용함.
- 인터페이스는 interface키워드를 통해 선언할 수 있으며, implements키워드를 통해 일반 클래스에서 인터페이스를 구현할 수 있다.
- JAVA8 이전까지는 상수, 추상메소드만 선언이 가능했지만 (그만큼 강제성이 강했다) JAVA8부터는 디폴트메소드, 정적 메소드가 추가되었다.
public interface 인터페이스명 {
//상수
타입 상수명 = 값;
//추상메소드
타입메소드명(매개변수,...);
//디폴트메소드
default 타입 메소드명(매개변수,....){
// 구현부
}
//정적메소드
static 타입 메소드명(매개변수) {
//구현부
}
}
- 상수 = 인터페이스에서 값을 정해줄테니 함부로 바꾸지 말고 제공해주는 값만 참조해라 (절대적)
- 추상메소드 = 가이드만 줄테니 추상메소드를 오버라이딩 해서 재구현해라(강제적)
- 디폴트메소드 = 인터페이스에서 기본적으로 제공해주지만, 맘에 안들면 각자 구현해서 써라 (선택적)
- 정적 메소드 = 인터페이스에서 제공해주는 것으로 무조건 사용하라(절대적)
- 절대적 = 아무것도 손댈 수 없음
- 강제적 = 인터페이스를 implements하지 않으면 피할 순 있음
인터페이스는 객체 지향 개발 5대 원칙 - SOLID를 만족시켜 줄 수 있다.
서비스 애플리케이션의 라이프 사이클을 설계/개발/유지보수 단계로 나누면 유지보수가 소프트웨어 라이프 사이클에서 큰 부분을 차지함.
유지보수에서 인터페이스는 solid를 구현하고, 객체지향개발을 하는데 큰 도움을 준다.
인터페이스의 역할
- 인터페이스는 객체를 어떻게 구성해야 하는지 정리한 설계도이다.
- 인터페이스는 객체의 교환성 또는 다형성을 높여준다.
- 인터페이스를 이용하여 개발 코드를 직접 수정하지 않고도 사용하고 있는 객체만 변경할 수 있도록 하기 위함이다.
728x90
'JAVA' 카테고리의 다른 글
클래스의 구조 (0) | 2023.03.30 |
---|---|
자바 언어 개요 (0) | 2023.03.28 |
업캐스팅과 다운캐스팅 (0) | 2023.03.14 |
상속 (0) | 2023.03.14 |
배열(array) - 자료를 순차적으로 한꺼번에 관리하는 방법 (0) | 2023.03.14 |
댓글