Frog is cry
인터페이스 본문
ex01
package 인터페이스.ex05;
public interface RemoteControl {
//상수
int MAX_VOLUME = 10;
int MIN_VOLUME = 0;
//메소드
void turnOn();
// public abstract 를 생략해도 기본적으로 들어감
void turnOff();
void setVolume(int volume);
}
package 인터페이스.ex05;
public interface Searchable {
void search(String url);
}
package 인터페이스.ex05;
public class SmartTelevision_Ex {
public static void main(String[] args) {
SmartTelevision tv = new SmartTelevision();
RemoteControl rc = tv;
rc.turnOn();
rc.setVolume(5);
rc.turnOff();
Searchable sh = tv;
sh.search("http://www.naver.com");
}
}
package 인터페이스.ex05;
import 인터페이스.ex06.RemoteControl;
public class SmartTelevision implements 인터페이스.ex05.RemoteControl, Searchable{
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);
}
@Override
public void search(String url) {
System.out.println(url + "을 검색합니다.");
}
}
ex02
package 인터페이스.ex06;
public class MyClass {
//Field
RemoteControl rc = new Television();
//Constructor
MyClass() {
}
MyClass(RemoteControl rc) {
this.rc = rc;
rc.turnOn();
rc.setVolume(5);
}
//Method
void MethodA() {
RemoteControl rc = new Audio();
rc.turnOn();
rc.setVolume(5);
}
void MethodB(RemoteControl rc) {
rc.turnOn();
rc.setVolume(5);
}
}
package 인터페이스.ex06;
public class MyClass_Ex {
public static void main(String[] args) {
System.out.println("1)---------------");
MyClass myClass1 = new MyClass();
myClass1.rc.turnOn();
myClass1.rc.setVolume(5);
System.out.println("2)---------------");
MyClass myClass2 = new MyClass(new Audio());
System.out.println("3)---------------");
MyClass myClass3 = new MyClass();
myClass3.MethodA();
System.out.println("4)---------------");
MyClass myClass4 = new MyClass();
myClass4.MethodB(new Television());
}
}
package 인터페이스.ex06;
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);
}
}
package 인터페이스.ex06;
public interface RemoteControl {
//상수
int MAX_VOLUME = 10;
int MIN_VOLUME = 0;
//메소드
void turnOn();
// public abstract 를 생략해도 기본적으로 들어감
void turnOff();
void setVolume(int volume);
}
package 인터페이스.ex06;
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);
}
}
'JAVA > 복습' 카테고리의 다른 글
For-each (0) | 2020.07.29 |
---|---|
인터페이스와 추상클래스의 차이 (0) | 2020.07.25 |
추상클래스 (0) | 2020.07.22 |
타입변환과다형성 (0) | 2020.07.22 |
메소드 재정의(오버라이딩) (0) | 2020.07.22 |
Comments