인터페이스(interface)
: 모든 메소드가 public abstract로 선언되고, 모든 멤버 변수가 public static final로 선언된 특별한 종류의 추상 클래스
* 인터페이스는 interface라고 선언한다. ex) interface TestInterface{}
* 인터페이스를 구현(상속)하는 클래스에서는 implements 키워드를 사용한다. ex) class TestImp implements TestInterface{}
* 인터페이스를 구현(상속)할 때는 개수 제한이 없다.
* 메소드 선언에서 public abstract와 멤버 변수 선언에서 public static final은 생략 가능하다.
* 인터페이스는 인스턴스 생성이 불가능하다. (new 사용 불가)
* 추상 메소드만 implement하는 목적으로 설계되는 인터페이스의 이름은 보통 ~able로 작명하는 경우가 많다.
* 인터페이스 2개를 다중 상속한 경우 양쪽에 동일한 이름의 Method가 있다면 한번만 implement 하면 된다.
* 다중 상속받은 클래스를 객체화한 후 그 안에 변수를 호출할 때 동일한 변수명이라면 클래스명.변수명 으로 호출해야 에러가 발생하지 않는다.
ex) System.out.println(TestInterface.MIN);
System.out.println(TestInterface2.MIN);