인터페이스는 코드와 객체가 통신하는 접점을 말한다.
개발코드는 객체를 사용할때 인터페이스의 메소드만 알고있으면 된다.
인터페이스는 객체를 교환하여 사용할 수 있는데 이러한 기능은 개발코드를 변경하지 않고도 리턴값 및 실행내용을 다양하게 만들 수 있다.
인터페이스 선언법
[public] interface 인터페이스명{'''}
인터페이스의 구성멤버로는
상수, 추상메소드, 디폴트메소드, 정적메소드가 있는데 는 자바 8이후로 가능해졌다고 한다.
추가적으로 인터페이스 선언에서 알아두어야 할 부분은
- 상수 필드만 선언가능(데이터를 저장하지 않는다.)
- 선언된 필드는 모두 public static final이다. (이는 생략시에도 컴파일과정에서 자동으로 추가된다.)
- 상수명은 대문자로 작성 (단어가 결합되면 낙타표기법 사용)
- 선언과 동시에 초기값 지정 ( static {}블록으로 초기화가 불가능하다.)
추상 메소드 선언
Public abstract 리턴타입 메소드명 (매개변수);
- 인터페이스를 통해 호출된 메소드는 객체에서 실행된다.
- 추상 메소드는 기본적으로 실행 블록이 없는 추상 메소드로 선언된다.
- public abstract를 생략해도 컴파일 과정에서 자동으로 붙는다.
1
2
3
4
5
6
7
8
9
10
11
12
|
package day200804;
public interface RemoteControl {
//상수
int MAX_COLUME = 10;
int MIN_VOLUME = 0;
public void turnOn();
public void turnOff();
public void setVolume(int voiume);
//추상 메소드 (선언부만 작성한다 실행부는 없다.)
}
|
cs |
디폴트 메소드 선언 (java 8부터 추가)
Public default 리턴타입 메소드명 (매개변수){}
- 실행블록을 가지고 있는 메소드이다.
- default 키워드를 반드시 붙여야 한다.
- Public 접근제한이 기본이다. (생략하더라도 컴파일 과정에서 자동으로 붙는다.)
정적메소드 (java 8 부터 추가)
public static 리턴타입 메소드명 (매개변수) {}
1
2
3
4
5
6
7
8
|
package day200804;
public interface RemoteControl {
static void changeBettery() {
System.out.println("건전지를 교환합니다.");
}
}
|
cs |
인터페이스 구현
public class 구현 글래스명 implements 인터페이스명 {
// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}
자신(구현 클래스)의 객체가 인터페이스 타입으로 사용할 수 있음을 implements로 명시한다.
- 구현 클래스의 메소드의 선언부가 인터페이스의 메소드 선언부와 정확히 일치해야한다.
- 인터페이스의 모든 추상메소드를 작성해야한다.
- 일부만 재정의할 경우 추상 클래스로 선언 + abstract키워드를 붙여준다.
TIP! 클래스를 만들때 name아래 abstract를 선택해주면 굳이 쓰지 않고도 클래스가 생성될 때 만들어져 나온다
- 인터페이스 메소드는 public접근제한을 갖기 때문에 public보다 낮은 접근제한은 할수없다.(ex.private, protected )
- @override 어노테이션을 이요하여 재정의가 정확히 되었는지 체크하여야 한다.
+ 인터페이스를 사용하지 않는경우
Television tv = new Television();
+인터페이스를 사용하는 경우
RemoteControl rc; 인터페이스변수 ;
rc = new Television(); 변수 = 구현객체;
'JAVA' 카테고리의 다른 글
캡슐화 /getters and etters (0) | 2020.09.09 |
---|---|
인터페이스 익명 구현 객체/ 다중 인터페이스/인터페이스 사용 (0) | 2020.09.08 |
인터페이스의 다형성 (0) | 2020.09.06 |
자바/ wrapper Class (0) | 2020.09.04 |
java/ to String 주소값 출력 값 출력으로 오버라이드 하기 (0) | 2020.09.03 |