문제
아래의 3개의 클래스와 1개의 인터페이스를 작성하고, 실행결과를 출력하시오!
RemoteControl(인터페이스)
Television, Audio, RemoteControlExample
RemoteControl(인터페이스)
멤버변수
int MAX_VOLUME *10으로 초기화
int MIN_VOLUME *0으로 초기화
멤버함수
void turnOn(void) *추상메서드
void turnOff(void) *추상메서드
void setVolume(int volume) *추상메서드
default void setMute(boolean mute) *디폴트메서드 출력결과 보고 구현
static void changeBattery(void) *정적메서드 출력결과 보고 구현
Television Class(구현클래스)
멤버변수
private int volume
멤버함수
void turnOn(void) *출력결과 보고 오버라이딩
void turnOff(void) *출력결과 보고 오버라이딩
void setVolume(int volume) *출력결과 보고 오버라이딩
Audio Class(구현클래스)
멤버변수
private int volume
멤버함수
void turnOn(void) *출력결과 보고 오버라이딩
void turnOff(void) *출력결과 보고 오버라이딩
void setVolume(int volume) *출력결과 보고 오버라이딩
RemoteControlExample(실행클래스)
결과
TV를 켭니다.
Television 볼륨의 최대치 값은 10입니다.
볼륨을 10으로 지정합니다!
현재 TV 볼륨: 10
Television 볼륨의 최소치 값은 0입니다.
볼륨을 0으로 지정합니다!
현재 TV 볼륨: 0
무음 처리합니다.
무음 해제합니다.
건전지를 교환합니다.
TV를 끕니다.
Audio를 켭니다.
Television 볼륨의 최대치 값은 10입니다.
볼륨을 10으로 지정합니다!
현재 Audio 볼륨: 10
Television 볼륨의 최소치 값은 0입니다.
볼륨을 0으로 지정합니다!
현재 Audio 볼륨: 0
무음 처리합니다.
무음 해제합니다.
건전지를 교환합니다.
Audio를 끕니다.
코드
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 == true) {
System.out.println("무음 처리합니다.");
}
else
System.out.println("무음 해제합니다.");
}
static void changeBattery() {
System.out.println("건전지를 교환합니다.");
}
}
class Television implements RemoteControl {
private int volume;
public void turnOn() {
System.out.println("TV를 켭니다.");
}
public void turnOff() {
System.out.println("TV를 끕니다.");
}
public void setVolume(int volume) {
this.volume = volume;
System.out.println("볼륨을 " + volume + "으로 지정합니다!");
}
public int getVolume() {
return volume;
}
}
class Audio implements RemoteControl {
private int volume;
public void turnOn() {
System.out.println("Audio를 켭니다.");
}
public void turnOff() {
System.out.println("Audio를 끕니다.");
}
public void setVolume(int volume) {
this.volume = volume;
System.out.println("볼륨을 " + volume + "으로 지정합니다!");
}
public int getVolume() {
return volume;
}
}
public class RemoteControlExample {
public static void main(String[] args) {
Television tv = new Television();
tv.turnOn();
System.out.println("Television 볼륨의 최대치 값은 " + RemoteControl.MAX_VOLUME + "입니다.");// tv.으로 해도 될듯
tv.setVolume(10);
System.out.println("현재 TV 볼륨: " + tv.getVolume());
System.out.println("Television 볼륨의 최소치 값은 " + tv.MIN_VOLUME + "입니다.");
tv.setVolume(0);
System.out.println("현재 TV 볼륨: " + tv.getVolume());
tv.setMute(true);
tv.setMute(false);
RemoteControl.changeBattery();
tv.turnOff();
System.out.println();
Audio audio = new Audio();
audio.turnOn();
System.out.println("Television 볼륨의 최대치 값은 " + RemoteControl.MAX_VOLUME + "입니다.");// tv.으로 해도 될듯
audio.setVolume(10);
System.out.println("현재 Audio 볼륨: " + audio.getVolume());
System.out.println("Television 볼륨의 최소치 값은 " + audio.MIN_VOLUME + "입니다.");
audio.setVolume(0);
System.out.println("현재 Audio 볼륨: " + audio.getVolume());
audio.setMute(true);
audio.setMute(false);
RemoteControl.changeBattery();
audio.turnOff();
}
}
volume이 private 타입이어서 getVolume() 메서드도 따로 작성해 주었다.
알게된 것
static void changeBattery() {
System.out.println("건전지를 교환합니다.");
}
*와 같은 구문이 Televesion과 Audio에서도 implements를 해줘서
티비나 오디오의 객체 생성 후 tv.changeBattery() 또는 audio.changeBattery()로 메소드 호출이 가능할 것 같았으나 static 형식은 그렇지 않았다
'Java' 카테고리의 다른 글
| [Java] (interface) (18-2) (0) | 2023.08.31 |
|---|---|
| [Java] (interface) (18-1) (0) | 2023.08.30 |
| [Java] interface (17-1) (0) | 2023.08.30 |
| [Java] (추상 클래스) (16-2) (0) | 2023.08.30 |
| [Java] (추상 클래스) (16-1) (0) | 2023.08.30 |