RemoteControl rc = null; //인터페이스 타입의 rc변수 선언
rc = new Television(); //rc에 텔레비전 클래스를 생성하면 텔레비전에 구현된 메소드가 동작
rc = new Audio(); //rc에 오디오 클래스를 생성하면 오디오에 구현된 메소드가 동작
//rc에 생성된 객체에 따라서 다른 실행
rc.turnOn();
rc.turnOff();
rc.setMute(true); //디폴트 메소드
RemoteControl.changeBattery(); //정적 메소드
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("건전지를 교환합니다.");
}
}
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);
}
}
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);
}
}
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 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 |