헬린코린이
[JAVA] 인터페이스 본문
인터페이스는 추상 클래스와 비슷한 개념을 가지고 있다.
다른 점은 인터페이스에는 추상 메서드만 정의 가능하다는 것이다.
그리고 상수만 작성 가능하다.
일단 코드를 보겠다.
public interface Phone {
public static final int MAX=100;
// public: 공개범위 오픈
// static: "객체와 무관하게"
// final: "상수화"
int MIN=0;
public abstract void powerOn();
void powerOff();
void soundUp();
void soundDown();
}
근데 의문이 들 것이다. 추상 메서드는 abstract를 붙여줘야 하는데 붙여주지 않았다.
int타입 앞에 키워드들도 붙여주지 않아도 자바에서 자동으로 제공해준다.
간단한 예제이다.
package class05;
class TV implements USETV{
String name;
int price;
Remote remote; // 특정 클래스가 다른 클래스를 멤버변수로 가질수있다!
@Override
public void changeCH() {
remote.changeCH();
}
@Override
public void powerON() {
remote.powerON();
}
@Override
public void powerOFF() {
remote.powerOFF();
}
TV(String name){
this.name=name;
this.price=1000000;
this.remote=new Remote();
}
}
class Remote implements USETV{
@Override
public void changeCH() {
System.out.println("채널 변경");
}
@Override
public void powerON() {
System.out.println("전원 ON");
}
@Override
public void powerOFF() {
System.out.println("전원 OFF");
}
}
public class Test03 {
public static void main(String[] args) {
TV tv=new TV("홍길동");
tv.powerON();
tv.changeCH();
tv.powerOFF();
}
}
Remote 클래스를 TV 클래스 안에 선언했는데
포함시켰다고 하는 것이다.
클래스를 포함시켜도 상속과 같은 기능을 한다.
그렇다면 포함과 상속의 차이는 뭘까
쉽게 말해
is a와 has a를 가지고 문장을 만들어 보면 된다..
원은 점이다. (Circle is a point)
원은 점을 가지고 있다. (Circle has a point)
is a는 상속
is has는 포함시키면 된다.
마지막으로 인터페이스를 굳이 작성하는 이유는
자바는 다중 상속을 허용하지 않는다.
그래서 인터페이스를 만들 걸 지도 모른다.
Comments