- 상수
- public만 허용, public static final 생략- 추상 메소드
- public abstract 생략 가능- default 메소드
- 인터페이스에 코드가 작성된 메소드
- 인터페이스를 구현하는 클래스에 자동 상속
- public 접근 지정만 허용. 생략 가능- private 메소드
- 인터페이스 내에 메소드 코드가 작성되어야 함
- 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능- static 메소드
- public, private 모두 지정 가능. 생략하면 public
- 인터페이스의 객체 생성 불가
new PhoneInterface(); // 오류.
- 인터페이스 타입의 레퍼런스 변수 선언 가능
PhoneInterface galaxy; // galaxy는 인터페이스에 대한 레퍼런스 변수
- 인터페이스를 상속받는 클래스는 인터페이스의 모든 추상 메소드 반드시 구현
- 다른 인터페이스 상속 가능
- 인터페이스의 다중 상속 가능
- 인터페이스의 추상 메소드르 모두 구현한 클래스 작성
- implements 키워드 사용
- 여러 개의 인터페이스 동시 구현 가능
public interface PhoneInterface { final int TIMEOUT = 10000; void sendCall(); void receiveCall(); default void printLogo(){ System.out.println("**Phone**"); } }class SamsungPhone implements PhoneInterface { @Override public void sendCall() { System.out.println("띠리리리링"); } @Override public void receiveCall() { System.out.println("전화가 왔습니다."); } // 메서드 추가 작성 public void flash() { System.out.println("전화기에 불이 켜졌습니다."); } }public class InterfaceEx { public static void main(String[] args) { SamsungPhone samsungPhone = new SamsungPhone(); samsungPhone.printLogo(); samsungPhone.sendCall(); samsungPhone.receiveCall(); samsungPhone.flash(); } }실행결과: