안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
인터페이스로 구현 객체를 사용하려면 아래와 같이 인터페이스를 선언하고 구현 객체를 대입해야 합니다. 인터페이스 변수는 참조 타입이기 때문에 구현 객체가 대입될 경우 구현 객체의 번지를 저장합니다.
인터페이스 변수; 또는 인터페이스 변수 = 구현 객체;
변수 = 구현 객체;
RemoteControl 인터페이스의 구현 객체인 Television 과 Audio를 사용하려면 다음과 같이 RemoteControl 타입 변수를 선언하고 구현 객체에 대입해야 합니다.
RemoteControl rc;
rc = new Television();
rc = new Audio();
인터페이스는 클래스의 필드, 생성자 또는 메서드의 매개 변수, 생성자 또는 메서드의 로컬 변수로 선언될 수 있습니다.
public classMyClass {
//field
RemoteControl rc = new Television();
//Constructor
MyClass(RemoteControl rc) {
this.rc = rc;
//Method
void methodA() {
//로컬 변수
RemoteControl rc = new Audio();
}
void methodB(RemoteControl rc) { ... }
}
추상 메서드 사용
구현 객체가 인터페이스 타입에 대입되면 인터페이스에 선언된 추상 메서드를 개발 코드에서 호출할 수 있게 됩니다. 개발 코드에서 RemoteControl의 변수 로 turnOn() 또는 turnOff()메서드를 호출하면
구현 객체의 turnOn() 과 turnOff() 메서드가 자동 실행됩니다.
RemoteControl rc = new Television();
rc.turnOn(); -> Television 의 turnOn() 실행
rc.turnOff(); -> Television 의 turnOff() 실행
예제)
디폴트 메서드 사용
디폴트 메서드는 인터페이스에서 선언되지만, 인터페이스에서 바로 사용할 수 없습니다.
디폴트 메서드는 인스턴스 메서드이므로 구현 객체가 있어야 사용할 수 있습니다.
RemoteControl 인터페이스는 setMute() 라는 디폴트 메서드를 가지고 있다고 하면,
이 메서드를 RemoteControl.setMute(); 처럼 호출할 수 없습니다.
setMute()를 호출하려면 구현 객체가 필요합니다.
예제
정적 메서드 사용
인터페이스의 정적 메서드는 인터페이스로 바로 호출 가능합니다.
ex)
인터페이스
public interface RemoteControl {
//정적 메소드
static void changeBattery() {
System.out.println("건전지를 교환합니다.");
}
}
public class RemoteControlExample {
public static void main(String[] args) {
RemoteControl.changeBattery();
}
}
'자바' 카테고리의 다른 글
JAVA 자바 인터페이스 필드의 다형성 // 인터페이스 배열로 구현 객체 관리 (0) | 2017.03.13 |
---|---|
JAVA 자바 인터페이스: 자동 타입 변환(Promotion) (0) | 2017.03.13 |
JAVA 자바 인터페이스 구현 익명 구현 객체와 다중 인터페이스 구현 클래스 (0) | 2017.03.13 |
JAVA 자바 인터페이스 구현 클래스 (0) | 2017.03.13 |
JAVA 자바 추상 메서드 선언, 디폴트 메서드 선언, 정적 메서드 선언 (0) | 2017.03.13 |