상세 컨텐츠

본문 제목

인터페이스2(java)

프로그래밍/JAVA

by RosetteNebula 2021. 1. 15. 21:47

본문

RemoteControl rc = null;  //인터페이스 타입의 rc변수 선언

rc = new Television();  //rc에 텔레비전 클래스를 생성하면 텔레비전에 구현된 메소드가 동작

rc = new Audio();  //rc에 오디오 클래스를 생성하면 오디오에 구현된 메소드가 동작

 

//rc에 생성된 객체에 따라서 다른 실행

rc.turnOn(); 

rc.turnOff();

rc.setMute(true);  //디폴트 메소드

RemoteControl.changeBattery();  //정적 메소드

 

 

interface RemoteControl

public interface RemoteControl {
	//상수
	int MAX_VOLUME = 10;
	int MIN_VOLUME = 10;
	
	//추상 메소드
	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("건전지를 교환합니다.");
	}
}

 

class Audio (RemoteControl 인터페이스 상속)

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);
	}	
}

 

class Television (RemoteControl 인터페이스 상속)

public class Television implements RemoteControl{
	//필드
	private int volume;

	@Override	//turnOn() 추상 메소드의 실체 메소드
	public void turnOn() {
		System.out.println("TV를 켭니다.");
	}

	@Override	//turnOff() 추상 메소드의 실체 메소드
	public void turnOff() {
		System.out.println("TV를 끕니다.");
	}

	@Override	//setVolume() 추상 메소드의 실체 메소드
	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);
	}	
}

 

class Main

import java.util.*;

public class RemoteControlExample {

	public static void main(String[] args) {
		RemoteControl rc = null;
		
		Scanner scan = new Scanner(System.in);
		System.out.println("1번 텔레비전, 2번 오디오");
		int menu = scan.nextInt();
		
		if(menu == 1) {
			rc = new Television();
		}
		
		if(menu == 2) {
			rc = new Audio();
		}
		
		rc.turnOn();
		rc.turnOff();
		rc.setMute(true);
		
		RemoteControl.changeBattery();
	}
}

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA swing TextArea 사이즈 조절  (0) 2021.01.25
교과목 성적처리 프로그램(java)  (0) 2021.01.15
인터페이스(java)  (0) 2021.01.15
도서관리 프로그램(java)  (0) 2021.01.14
추상 메소드와 오버라이딩  (0) 2021.01.14

관련글 더보기