이전에 배웠듯, 객체는 메소드를 통해 외부 세계와의 상호작용을 정의한다.
메소드는 외부 세계와 객체의 인터페이스를 형성한다.
예를 들어, 사용자와 TV에 붙어 있는 몇 개의 버튼들은 사용자와 플라스틱 케이스(TV 본체)의 안쪽에 있는 전기 배선(실제 TV를 기능하게 하는) 사이의 인터페이스이다.
더 자세히 말하자면,
TV 안쪽의 전기배선 = 인터페이스
TV의 버튼(들) = 구현되어진 클래스(들)
우리가 TV를 켜고 끌 때 "전원" 버튼을 누르는 것 = 구현되어진 클래스를 사용 -> 인터페이스가 작동
가장 일반적인 형식에서 인터페이스는 본문(body)이 비어있는 관련 메소드 그룹이다.
인터페이스로 지정된 경우 자전거의
행동
(메소드)는 다음과 같이 나타날 수 있다.
interface Bicycle { // 분당 바퀴 회전
void changeGear(int newValue); // 비어있는 메소드.
void speedUp(int increment);
void applyBrakes(int decrement);
}
위의 인터페이스를 구현하려면 클래스 이름이 특정 브랜드(예: ACMEBicycle )로 변경되고 클래스 선언에서 구현 키워드를 사용한다.
class ACMEBicycle implements Bicycle { // 해당 class에서 구현 할 인터페이스(Bicycle) 선언.
int cadence = 0; int speed = 0; int gear = 1;
// 컴파일러에 이제 해당 메서드가 필요.
// 인터페이스 상의 모든 메소드가 구현되어야 하며, 그렇지 않으면, 컴파일은 실패.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
}
}
인터페이스를 구현하면 클래스가 제공하기로 약속하는 행동에 대해 더 공식적(formal)이 될 수 있다.
인터페이스는 클래스와 외부 세계 사이에 계약을 형성하며, 이 계약은 컴파일러에 의해 빌드 시점에 시행된다.
어떤 클래스가 인터페이스를 구현하는 경우 해당 인터페이스에 정의된 모든 메서드가 소스 코드에 표시(구현)되어야 클래스가 성공적으로 컴파일된다.
출처 : docs.oracle.com/javase/tutorial/java/concepts/interface.html
'Language > Java' 카테고리의 다른 글
Java api 일기 6 연산자 요약 (0) | 2021.01.18 |
---|---|
Java api 일기 5 패키지란? (0) | 2021.01.18 |
Java api 일기 3 상속이란? (0) | 2021.01.17 |
Java api 일기 2 클래스란? (0) | 2021.01.17 |
Java api 일기 1 객체란? (0) | 2021.01.17 |