profile image

L o a d i n g . . .

인터페이스?

객체의 사용방법을 정의한 것.

개발코드와 객체가 서로 통신하는 접점역할. 하나의 객체가 아닌 여러 객체들과 사용가능하므로 어떤 객체를 사용하느냐에따라 실행 ㅐㄴ용과 리턴값이 다를 수 있다.

 

 

상수필드와 추상메소드 선언

public interface RemoteControl {
	public int MAX_VOLUME = 10;
	public int MIN_VOLUME = 0;
	
	public void turnOn();
	public void turnOff();
	public void setVolume(int volume);
}

인터페이스는 객체 사용 방법을 정의한 것이므로 실행시 데이터를 저장할 수 있는 인스턴스 또는 정적 필드 선언 불가

그러나 상수필드(constatnt field)선언은 가능. (인터페이스에 고정된 값으로써 실행 시 데이터 변경 불가)

인터페이스 상수는 반드시 선언과 동시에 초기값 지정

 

인터페이스 메소드는 최종적으로 객체에서 실행되니 때문에 실행블록이 필요없는 추상 메소드로 선언.

모두 abstract 특성을 지니므로 public abstract 생략가능 (컴파일에서 자동 생성)

 

 

 

인터페이스 구현

implements 키워드 사용 후 실체 메소드 선언

package a220712;

public class Television implements RemoteControl{
	private int volume;

	@Override
	public void turnOn() {
		System.out.println("티비를 켭니다");
	}

	@Override
	public void turnOff() {
		System.out.println("티비를 끕니다");
	}

	@Override
	public void setVolume(int volume) {
		if(volume > MAX_VOLUME) {
			this.volume = MAX_VOLUME;
		} else if (volume < MIN_VOLUME) {
			this.volume = MIN_VOLUME;
		} else {
			this.volume = volume;
		}
		System.out.println("현재 TV 볼륨 : " + this.volume);
	}
	
	public static void main(String[] args) {
		RemoteControl control = new Television();
		control.setVolume(11);
		control.setVolume(6);
		control.setVolume(-3);
	}
}

인터페이스 구현을 위해선

 

new 연산자를 이용해 Television 타입의 인스턴스 생성자를 호출(생성) 후 해당 주소를 RemoteControl 객체 타입 변수 control에 할당해줘야한다

 

 

 

 

 

다중 인터페이스 구현

public class Television implements RemoteControl, Searchable{
...
}

                                                                              

 

참고: 

혼자 공부하는 자바(신용권), 한빛미디어

 

반응형

'개발 > JAVA' 카테고리의 다른 글

[Java] 익명 객체  (0) 2022.07.13
[Java] 중첩클래스와 중첩 인터페이스  (0) 2022.07.13
[Java] 추상(abstract) 클래스  (0) 2022.07.12
[Java] 타입 변환과 다형성  (0) 2022.07.11
[Java] 상속  (0) 2022.07.11
복사했습니다!