인터페이스
일종의 추상클래스이지만 클래스라 부르지 않음
->인터페이스라 칭함
다른 클래스에서 구현(상속) 방법
: public class 클래스명 implements 인터페이스 명 {
멤버 선언(상수, 추상메소드)
}
한 클래스에서 부모클래스 상속과 인터페이스 구현을 동시에 받았고 부모클래스의 메소드 이름과 인터페이스의 메소드 이름이 같다면 자식 클래스에서는 상속받은 메소드를 우선적으로 사용
상속 > 구현
인터패이스의 멤버
상수 : 변수를 선언시
public static final 이 자동 생성되어 상수화
추상메소드 : 메소드 생성시
public abstract 자동생성
즉, 인터페이스를 구현(상속) 받은
클래스는 반드시 메소드를 재정의 해야함
-> 추상클래스와 비슷함
하지만 인터페이스는 클래스의 상속과 다르게
한 자식 클래스가 여러 인터페이스를 구현(상속) 받을 수 있음
-> 자바는 클래스의 다중 상속이 불가능 함
-> 이를 해결하기 위해 인터페이스를 사용
-> 한 클래스에서 여러 인터페이서 구현O
인터페이스 사용 이유
Adapter class - interface
어댑터 클래스는 추상클래스임
(클래스명 뒤에 Adapter를 붙여 목적성을 띄우기)
즉, 멤버로 구현된(완성된) 메소드와 미구현된 메소드를 가질 수 있음
이런 식으로 어뎁터 클래스에서 인터페이스를 상속받아 강제성을 없애고 싶은 메소드를 오버라이딩을 한다
다른 자식 클래스에서 어댑터 클래스를 상속 받으면 강제성이 제거된 메소드는 재정의 없이 사용하고 싶은 메소드만 재정의 하여 쓸 수 있음
마커 인터페이스