1. 인터페이스 (Interface)
: 자바에서 객체의 사용 방법을 정의한 타입으로 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킨다.
-> 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서 직접 객체의 메소드를 호출하지 않고 중간에 인터페이스를 둔다.
-> 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다.
-인터페이스 선언
: 인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용한다.
[ public ] interface 인터페이스명 {
// 상수
[ public static final ] 타입 상수명 = 값;
// ->상수는 public static final로 선언하는데 생략이 가능하며, 생략 시 자동적으로 컴파일 과정에서 붙게 된다.
// 추상 메소드
public abstract 메소드명(매개변수, ...);
// 디폴트 메소드
[ public ] default 타입 메소드명(매개변수, ...) { ... }
// 정적 메소드
[ public ] static 타입 메소드명(매개변수) { ... }
}
->인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없고 상수와 메소드만을 구성 멤버로 가진다.
+상수 필드 (Constant Field):
: 인터페이스는 객체 사용 설명서이므로 런타임 시 데이터를 저장할 수 있는 필드를 선언할 수 없다. 그러나 상수 필드는 선언이 가능하다.
+추상 메소드 (Abstract Method)
: 객체가 가지고 있는 메소드를 설명한 것으로 호출할 대 어떤 매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다. 실제 실행부는 객체 (구현 객체)가 가지고 있다.
+디폴트 메소드 (Default Method)
: 인터페이스에 선언되지만 사실은 객체 (구현 객체)가 가지고 있는 인스턴스 메소드라고 생각해야 한다.
+정적 메소드(Static Method)
: 디폴트 메소드와는 달리 객체가 없어도 인터페이스만으로 호출이 가능하다.
-인터페이스 구현
: 인터페이스는 추상 클래스와 마찬가지로 자신이 직접 인스턴스를 생성할 수 없기 때문에 인터페이스가 포함하고 있는 추상 메소드를 구현해 줄 클래스를 작성해야만 한다.
public class 구현클래스명 implements 인터페이스명 {
// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}
*상속과 구현을 동시에 하는 방법
class 클래스명 extend 상위클래스명 implements 인터페이스명 { ... }
-> 인터페이스는 인터페이스로부터만 상속을 받을 수 있으며, 여러 인터페이스를 상속받을 수 있다.
*다중 인터페이스 구현
public class 구현클래스명 implements 인터페이스A, 인터페이스B {
// 인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언
// 인터페이스 B에 선언된 추상 메소드의 실체 메소드 선언
}
※인터페이스의 장점
- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능
- 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축 가능
- 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍 가능
'Programming > JAVA' 카테고리의 다른 글
자바의 추상 클래스 (0) | 2020.01.07 |
---|---|
자바 상속의 개념 (0) | 2020.01.03 |
자바의 접근 제한자 (0) | 2019.12.30 |
자바의 클래스 (0) | 2019.12.27 |
자바의 참조 타입과 배열 (0) | 2019.12.23 |