λ€μ€ μμ
μ¬λ¬ λμμΌλ‘λΆν° λ¬Όλ € λ°λ κ²
β’
ν΄λμ€λ λ€μ€μμ λΆκ°: μλ°μμλ ν΄λμ€κ° μ¬λ¬ ν΄λμ€λ₯Ό λμμ μμλ°μ μ μμ΅λλ€. μ΄λ 'λ€μ΄μλͺ¬λ λ¬Έμ 'λΌκ³ λΆλ¦¬λ μΆ©λ λ¬Έμ λ₯Ό λ°©μ§νκΈ° μν¨μ
λλ€.
β’
μΈν°νμ΄μ€λ λ€μ€μμ κ°λ₯: μΈν°νμ΄μ€λ μ¬λ¬ μΈν°νμ΄μ€λ₯Ό λμμ μμ(extends)ν μ μμ΅λλ€.
λ€μ€ ꡬν
ν ν΄λμ€κ° μ¬λ¬ μΈν°νμ΄μ€λ₯Ό ꡬν(implement)νλ κ²μ μλ―Έν©λλ€.
β’
ν΄λμ€μ λ€μ€ ꡬν: ν΄λμ€λ μ¬λ¬ μΈν°νμ΄μ€λ₯Ό λμμ ꡬνν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ€μ€ μμμ μ₯μ μ μ»μΌλ©΄μλ μΆ©λ λ¬Έμ λ₯Ό νΌν μ μμ΅λλ€.
public class MyClass extends ParentClass implements Interface1, Interface2, Interface3 {
// ν΄λμ€ λ΄μ©
}
Java
볡μ¬
β’
μΈν°νμ΄μ€ ꡬνμ μ΄μ : λ€μ€ ꡬνμ ν΅ν΄ ν΄λμ€λ μ¬λ¬ μν μ μνν μ μμΌλ©°, λ€μν νμ
μΌλ‘ μ°Έμ‘°λ μ μμ΅λλ€.
λ€μ€ μμ & λ€μ€ ꡬν μμμ½λ
π¦ Project
βββ π Interface
βββ π RemoteControl.java
βββ π Microphone.java
βββ π Searchable.java
βββ π SmartRemoteControl.java
βββ π SmartTelevision.java
βββ π Main.java
Plain Text
볡μ¬
RemoteControl.java
package Day08.Ex02_MultiImplement;
public interface RemoteControl {
int MAX_VOLUME = 300;
int MIN_VOLUME = 0;
void turnOn();
void turnOff();
void setVolume(int volume);
void setChannel(int channel);
default void setMute(boolean mute) {
if( mute ) {
System.out.println("μμκ±° μ€μ λμμ΅λλ€.");
setVolume(MIN_VOLUME);
}
else {
System.out.println("μμκ±° ν΄μ λμμ΅λλ€.");
setVolume(10);
}
}
static void changeBatter() {
System.out.println("λ°°ν°λ¦¬ κ΅μ²΄");
}
}
Java
볡μ¬
Microphone.java
package Day08.Ex02_MultiImplement;
public interface Microphone {
int inputVolumeMax = 50; // μμ± μΈμ μ΅λ λ³Όλ₯¨
int inputVolumeMin = 0; // μμ± μΈμ μ΅μ λ³Όλ₯¨
// μμ± μΈμ
String receiveVoice(String voice);
}
Java
볡μ¬
Searchable.java
package Day08.Ex02_MultiImplement;
// κ²μ μΈν°νμ΄μ€
public interface Searchable {
// μ±λ κ²μ
// : κ²μμ΄μ ν΄λΉνλ μ±λλ²νΈλ₯Ό λ°ν
int channelSearch(String keyword);
// 컨ν
μΈ κ²μ
// : κ²μμ΄μ ν΄λΉνλ 컨ν
μΈ λ₯Ό λ°ν
String[] contentSerach(String keyword);
}
Java
볡μ¬
SmartRemoteControl.java
package Day08.Ex02_MultiImplement;
// μΈν°νμ΄μ€ λ€μ€ μμ
// public intreface μΈν°νμ΄μ€λͺ
extends μΈν°νμ΄μ€A, μΈν°νμ΄μ€B ... {}
public interface SmartRemoteControl extends RemoteControl, Microphone {
// ν°μΉν¨λ κΈ°λ₯
// - x, y μ’ν μμΉμ ν°μΉν¨λλ₯Ό ν΄λ¦
void touch(int x, int y);
}
Java
볡μ¬
SmartTelevision.java
package Day08.Ex02_MultiImplement;
import java.text.MessageFormat;
// λ€μ€ ꡬν
// public class ν΄λμ€λͺ
implements μΈν°νμ΄μ€A, μΈν°νμ΄μ€B .. { }
public class SmartTelevision implements SmartRemoteControl, Searchable {
int volume; // λ³Όλ₯¨
int channel; // μ±λ
String keyword; // κ²μμ΄
int x, y; // ν°μΉν¨νΈ μ’ν
@Override
public void turnOn() {
System.out.println("μ μ ON");
}
@Override
public void turnOff() {
System.out.println("μ μ OFF");
}
@Override
public void setVolume(int volume) {
this.volume = volume;
System.out.println("volume : " + volume);
}
@Override
public void setChannel(int channel) {
this.channel = channel;
System.out.println("channel : " + channel);
}
@Override
public String receiveVoice(String voice) {
System.out.println("μμ± μ
λ ₯ : " + voice);
return "voice : " + voice;
}
@Override
public int channelSearch(String keyword) {
int channel = 0;
switch (keyword) {
case "SBS": channel = 5; break;
case "KBS": channel = 7; break;
case "MBC": channel = 11; break;
case "Mnet": channel = 27; break;
case "ENA": channel = 30; break;
}
return channel;
}
@Override
public String[] contentSerach(String keyword) {
String[] movieContents = {"μμ΄μΈλ§¨", "νμ§", "μΈμ
μ
", "λ°λν", "λ°μ§μμ μ","λ²μ£λμ"};
String[] idolContents = {"μμ€ν", "μμ΄λΈ", "λ΄μ§μ€", "μλ
μλ", "BTS", "2NE1"};
String[] recommendContend = {"λ©ν μ½λ―Έλ ν΄λ½", "κ²½μμλ€", "νΌμλν", "μ½λΉ
", "κ°μ½", "λ¨Ήλ°©"};
String[] choiceContents;
switch(keyword) {
case "μν" :
choiceContents = movieContents;
break;
case "μμ΄λ" :
choiceContents = idolContents;
break;
default:
choiceContents = recommendContend;
break;
}
return choiceContents;
}
@Override
public void touch(int x, int y) {
this.x = x;
this.y = y;
System.out.println("(x,y) : " + MessageFormat.format("({}, {})", x, y));
// System.out.println("(" + x + ", " + y + ")");
}
}
Java
볡μ¬
Main.java
package Day08.Ex02_MultiImplement;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
SmartTelevision tv = new SmartTelevision();
tv.turnOn();
tv.setVolume(20);
int channel = tv.channelSearch("SBS");
tv.setChannel(channel);
Scanner sc = new Scanner(System.in);
System.out.print("κ²μν 컨ν
μΈ : ");
String keyword = sc.nextLine();
String[] content = tv.contentSerach(keyword);
for (int i = 0; i < content.length; i++) {
System.out.print( content[i] );
if( i < content.length-1 )
System.out.print(", ");
}
System.out.println();
tv.receiveVoice("λ΄μ€ νμ΄μ€");
tv.turnOff();
sc.close();
}
}
Java
볡μ¬