단일 상속의 어려움을 극복하기 위한 인터페이스!
인터페이스는 클래스가 아니다. = 상속도 안되고 생성도 안된다.
Interface를 implements하여 다중상속 같은 효과를 얻음.
인터페이스 앞에는 public abstract만 접근제한자로 사용될 수 있다.
인터페이스 내부 메소드가 모두 abstract만 가능하므로 인터페이스도 abstarct 가 기본이 된다.
인터페이스의 모든 변수는 public static final 이다.
인터페이스 내부 메소드가 모두 abstract이므로 특별히 기능하는 것이 없다.
인터페이스는 어떤 큰 틀만을 제공하는 형태이므로 안의 변수도 큰 틀을 잡아주는 어떤 상수들만이 의미가 있다는 것을 유추할 수 있다.
인터페이스의 모든 메소드는 public abstract이다.
따라서 무조건 오버라이딩하여 사용해야 한다.
인터페이스는 생성할 수 없지만 자료형으로 사용가능하다.
인터페이스는 다른 인터페이스를 상속받을 수는 있다.
인터페이스를 상속받으면 모든 메소드를 재정의해야 한다. (모든 메소드가 abstract 형태이므로)
인터페이스를 쓰는 이유?
변수는 상수이니 변화할 수 없다. 메소드는 abstract 이니 실제 내용도 없다.
따라서 공동작업 등에서 어떤 커다란 틀을 제공하여 큰 작업환경에서 동일하게 변수명, 메소드명 등을 일치시키기 위한 수단으로 사용할 수 있다.
인터페이스를 활용한 가장 대표적인 패턴이 전략 패턴이다. Strategy Pattern 은 어떤 대상에 대해 목적은 같지만 알고리즘 등 전략이 다를 수 있을 때 사용하는 패턴이다.