
1.
2. 인터페이스 ( interface )
인터페이스는 추상메서드로 구성되어 구현 코드가 없다.
- 개발자가 선언하지 않더라도 모든 메서드가 추상메서드로 선언된다. → public abstract
- 모든 변수는 상수로 선언된다. → public static final
📑 interface 인터페이스
<java />
interface 인터페이스명 {
}
📑 implements 인터페이스를 상속 받은 클래스
<java />
public class 클래스명 implements 인터페이스명 {
}
2.0.1. 💡인터페이스는 왜 사용하는가?
클래스나 프로그램이 제공하는 기능을 명시적으로 선언한다.
일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세로 사용된다. ( 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.)
어떤 객체가 하나의 인터페이스 타입이라는 것은 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.
인터페이스를 구현한 다양한 객체(다형성)를 사용할 수 있다.
EX) JDBC 인터페이스
2.0.2. 💡추상 클래스 abstract VS 인터페이스 interface
공통점
- 추상 메서드를 가지고 있다. (코드의 독립성, 일관성 유지) : 설계도 역할
차이점
- 클래스 / 인터페이스
- 추상클래스는 abstract를 붙여야만 함. 인터페이스는 필수가 아니다.
- 추상클래스와 같은 용도 하지만 인터페이스가 더 많이 사용된다.
- 인터페이스는 다중상속이 가능하다.
- implements → 구현한다. → 추상메서드 오버라이딩 해야한다.
- 본인이 인터페이스를 생성 >> 코드의 독립성 일관성
- java Api 인터페이스 사용 >> 특정한 고유 기능을 구현하기 위해서 사용.
- 인터페이스로 형변환이 가능하다. >> 자바의 다양성을 표현
2.0.3. 💡자바 8 이후의 추가되는 메서드
- default 메서드 : 구현 체가 있는 디폴트 메서드 생성
인터페이스 안에 구현체가 있는 메서드를 생성할 수 있게되었다.
인터페이스를 상속받을 경우 해당 메서드를 사용할 수 있고 재정의도 가능하다.
<java />
default void description(){
System.out.println("디폴트 메서드")
}
- static 메서드 : 정적 메서드
인스턴스 생성(new) 과 관계없이 인터페이스 타입으로 직접 호출해서 사용이 가능하다.
기본적으로 인터페이스가 제공해야하는 기능을 정의할 수 있다. (상속 받은 클래스들이 사용해야할때)
<java />
static int total(int[] arr){
int total = 0;
for(int i : arr){
total += 1;
}
return total;
}
- private 메서드 (자바 9 이후 사용가능)
인터페이스를 구현한 클래스에서 사용하거나 재정의 할수 없음.
인터페이스 내부에서만 사용하기 위해 구현하는 메서드
인터페이스 내부의 default 메서드나 static 메서드에서 사용이된다.
'BackEnd > JavaProgram' 카테고리의 다른 글
[ Java ] 자료구조 (1) | 2023.08.17 |
---|---|
[ JAVA ] 추상 클래스 abstract / 템플릿 메서드 (0) | 2023.03.15 |
디자인 패턴 (0) | 2023.02.23 |
[ JAVA ] 객체 지향 / Extends 객체 간의 상속 관계 (0) | 2023.02.23 |
[ JAVA ] 자바 배열 문법 3 / 배열 메서드 ( Arrays ...) (0) | 2023.02.01 |