인터페이스(interface)
•
추상 클래스보다 추상성이 더욱 심화된 개념
•
멤버 변수는 상수형으로 선언되어야 함
•
메서드는 모두 추상 메서드로 선언되어야 함
•
상수와 추상 메서드 외에 다른 멤버를 갖지 못하게 함으로써 추상 클래스보다 더욱 완벽한 추상화를 제공함
•
논리적으로 is a ~ 관계가 성립하지 않거나(상속 X) 다중상속을 받고 싶은 경우에 활용된다.
인터페이스의 정의
•
인터페이스 이름으로 직접 해당 상수를 사용하기 위해서는?
◦
반드시 static 예약어를 final 예약어와 함께 사용해야 한다.
•
인터페이스의 변수 선언에 사용된 static final이나 메서드 선언에 사용된 abstract는 생략 가능
인터페이스의 활용
•
인터페이스는 추상 클래스와 유사하기 때문에 직접 객체화되지 못한다.
•
인터페이스의 상속 → 자식 클래스의 생성 → 자식클래스 객체 생성 → 프로그램 사용 순서를 따름
•
인터페이스를 상속하는 경우에는 implements 예약어를 사용한다.
◦
인터페이스를 상속하는 경우 모든 추상 메서드를 Overriding 해야 한다.
◦
인터페이스에 등록된 추상 메서드를 하나라도 Overriding 하지 않으면
추상 메서드가 상속되어 해당 클래스는 abstract 예약어가 붙은 추상 클래스로 선언된다.
인터페이스의 형변환
•
인터페이스 사용 시 클래스와 동일하게 묵시적 형변환과 명시적 형변환이 가능하다.
•
인터페이스 유형의 객체 참조 변수는 인터페이스에 선언된 요소에만 접근이 가능하다.
•
인터페이스를 구현한 객체의 요소에 접근하는 것은 허용되지 않는다.