인터페이스 문법은 알고 있지만 막상 왜 사용 되어야 하는지 개념을 잡고자 정리를 한다.
1.먼저 interface는 다른 클래스의 멤버들과 달리 다음과 같은 제약 사항을 가지고 있다.
-모든 멤버 변수는 public static final 이어야 하며, 이를 생략할수 있다.
-모든 메서드는 public abstract이어야 하며, 이를 생략할수 있다.
2.인터페이스의 추상메서드의 몸통을 구현하는 자손 클래스를 작성해야하는데 이때 인터페이스를 구현한다고 하며 키워드는 implements를 사용한다.
3.인터페이스 이름은 주로 able로 (~를 할수 있는 ) 의미로 파일(인터페이스명)으로 한다.(권장)
ex) playable
4.인터페이스를 구현한 자손 클래스는 인터페이스의 멤버 접근자보다 넓은 범위의 접근제어자를 지정해야 한다.
-interface의 멤버 void a(int a, int b) //이넘을 자손 클래스에서 구현할때 private void a() 이런식으로 하면 에러가난다.
class Tv{ void autoPlay(ITV i){ i.play(); } } interface ITV { public abstract void play(); } class TV_1 implements ITV{ pbulic void play(){ System.out.println("play TV_1 class"); } } class TV_2 implements ITV{ public void Play(){ System.out.println("play TV_2 class"); } } public class InterfaceTest { public static void main(String[] args){ Tv tv = new Tv(); tv.autoPlay(new TV_1()); tv.autoPlay(new TV_2()); } } |
※ 인퍼페이스를 사용 하는 이유는
확장성과 코드의 유연함이 주 목적