인터페이스 구현(1)

2022. 4. 15. 19:37java/java

1) 구현 객체와 구현 클래스

    -인터페이스의 추상 메소드에 대한 실체 메소드를 가진 객체 = 구현 객체

   

    -구현 객체를 생성하는 클래스 = 구현 클래스

 

2)구현 클래스 선언

   -자신의 객체가 인터페이스 타입으로 사용할 수 있음을 implements 키워드로 명시

public class 구현클래스명 implements 인터페이스명 {
	//인터페이스에 선언된 추상 메소드의 실제 메소드 선언
}

3)추상 메소드의 실체 메소드를 작성하는 방법

   -메소드의 선언부가 정확히 일치해야 한다.

   -인터페이스의 모든 추상 메소드를 재정의하는 실체 메소드를 작성해야 한다.

      (일부만 재정의할 경우, 추상 클래스로 선언해야 하며 abstract 키워드가 붙어야 한다.

   -인터페이스의 모든 메소드는 public 접근 제한을 갖기 때문에 public보다 더 낮은 접근 제한으로 작성할 수 없다.

   -이클립스의 자동 생성 기능을 이용한다.

   -@Override 어노테이션을 이용해서 정확히 재정의되었는지 컴파일러가 체크토록 한다.

 

인터페이스 객체

package sec03_exam01_name_impliment_class;

public interface RemoteControl {
	int MAX_VOLUME = 10;
	int MIN_VOLUME = 0;
	
	void turnOn();
	void turnOff();
	void setVolume(int volume);
	
	default void setMute(boolean mute) {
		if(mute) {
			System.out.println("무음 처리합니다.");
		} else {
			System.out.println("무음 해제합니다.");
		}
	}
	
	static void changeBattery() {
		System.out.println("건전지를 교환합니다.");
	}
}

구현 객체

-------------Television 객체--------------------------

package sec03_exam01_name_impliment_class;

public class Television implements RemoteControl {
	private int volume;
	
	@Override
	public void turnOn() {
		System.out.println("TV를 켭니다.");
	}

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

	@Override
	public void setVolume(int volume) {
		if(volume > RemoteControl.MAX_VOLUME) {
			this.volume = RemoteControl.MAX_VOLUME;
		} else if(volume < RemoteControl.MIN_VOLUME) {
			this.volume = RemoteControl.MIN_VOLUME;
		} else {
			this.volume = volume;
		}
		System.out.println("현재 TV 볼륨 : " + this.volume);
	}

}

---------------------Audio 객체-------------------------------

package sec03_exam01_name_impliment_class;

public class Audio implements RemoteControl {
	private int volume;
	
	@Override
	public void turnOn() {
		System.out.println("Audio를 켭니다.");
	}

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

	@Override
	public void setVolume(int volume) {
		if(volume > RemoteControl.MAX_VOLUME) {
			this.volume = RemoteControl.MAX_VOLUME;
		} else if(volume < RemoteControl.MIN_VOLUME) {
			this.volume = RemoteControl.MIN_VOLUME;
		} else {
			this.volume = volume;
		}
		System.out.println("현재 Audio 볼륨 : " + this.volume);
	}

}

 

4)인터페이스 변수와 구현 객체

   -인터페이스를 사용하지 않은 경우

     Television tv = new Television();

   -인터페이스를 사용한 경우

     인터페이스 변수 = new 구현객체();

 

     RemoteControl rc;

     rc = new Television();

     rc = new Audio();

  

'java > java' 카테고리의 다른 글

인터페이스의 다형성  (0) 2022.04.19
인터페이스 구현(2)  (0) 2022.04.15
인터페이스 선언  (0) 2022.04.14
인터페이스의 역할  (0) 2022.04.14
Set-HashSet (보완 필요)  (0) 2022.03.26