혼자 공부하는 자바 복습중, 그때그때 필요한 개념들만 벨로그에 기록 예정!
오늘 복습 대상 : 인터페이스
인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할. 개발 코드가 직접 메소드를 호출하지 않고 중간에 인터페이스를 두는 이유는 개발 코드를 수정하지 않고 사용하는 객체를 변경하기 위함. 쉽게 말해서, 객체 사용 방법을 정의한 것.
⭐️ 인터페이스 내의 선언
1. 상수 필드 선언
[public static final] 타입 상수이름 = 값;
2. 추상 메소드 선언
[public abstract] 리턴 타입 메소드이름(매개변수,...)
public interface RemoteControl{
//상수
public int MAX_VOLUME = 10;
public int MIN_VOLUME = 0;
//추상 메소드
public void turnOn();
public void turnOff();
public void setVolume(int volume);
}
⭐️ 인터페이스 구현
public class 구현클래스이름 implements 인터페이스 이름 { // 인터페이스에 선언된 추상 메소드의 실체 메소드 선언}
public class Television implements RemoteControl{
//필드
private int volume;
//turnOn() 실체메소드
public void turnOn(){
System.out.println("TV를 켭니다.");
}
public void turnOff(){
System.out.println("TV를 끕니다.");
}
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);
}
}
구현 클래스가 완성되면 new 연산자로 객체 생성 가능
Television tv = new Television();
public class RemoteControlExample{
public static void main(String[] args){
RemoteContorl rc;
rc = new Television();
}
}
⭐️ 다중 인터페이스 구현 클래스
public class 구현클래스이름 implements 인터페이스A, 인터페이스B{ // 인터페이스A 실체 구현, B 실체 구현 }
✔️ p.385 확인문제 3번
public interface Soundable {
String sound();
}
public class SoundableExample {
private static void printSound(Soundable soundable) {
System.out.println(soundable.sound());
}
public static void main(String[] args) {
printSound(new Cat());
printSound(new Dog());
}
}
public class Cat implements Soundable {
public String sound(){
String strCat = "야옹";
return strCat;
}
}
public class Dog implements Soundable {
public String sound(){
String strDog = "멍멍";
return strDog;
}
}