public class A implements B {}
인터페이스는 단독으로 객체 생성이 불가능하다.
인터페이스는 무조건 추상메서드만 가능하고, 구현된 메서드를 가질 수 없다.
추상 메서드와 final static(상수)를 둘 수 있다.
public interface Remocon { // 객체 생성 불가능 => Remocon r = new Remocon();
public int MAXCH = 100;
public final static int MINCH = 1;
public void chUp();
public void chDown();
public void internet();
}
TV class (자식클래스)
public class TV implements Remocon {
@Override
public void chUp() {
System.out.println("TV에 채널이 올라간다.");
}
@Override
public void chDown() {
System.out.println("TV에 채널이 내려간다.");
}
@Override
public void internet() {
System.out.println("인터넷이 된다.");
}
}
Radio class (자식클래스)
public class Radio implements Remocon{
@Override
public void chUp() {
System.out.println("Radio 채널이 올라간다");
}
@Override
public void chDown() {
System.out.println("Radio 채널이 내려간다");
}
@Override
public void internet() {
System.out.println("Radio 인터넷이 지원되지 않는다. ");
}
}
부모클래스가 interface 이면, 자식클래스는 무조건 동작시킬 수 있다.
하위클래스의 동작방식을 몰라도 인터페이스로 100% 동작시킬 수 있다.
public class Test {
public static void main(String[] args) {
Remocon r = new TV();
r.chUp();
r.chDown();
r.internet();
r = new Radio();
r.chUp();
r.chDown();
r.internet();
}
}
/*
TV에 채널이 올라간다.
TV에 채널이 내려간다.
인터넷이 된다.
Radio 채널이 올라간다
Radio 채널이 내려간다
Radio 인터넷이 지원되지 않는다.
*/
💡 추상클래스와 인터페이스를 어떻게 구분할까?