[Java] 인터페이스, 추상클래스
인터페이스
인터페이스는 구현부가 없는 일종의 불완전한 클래스다. 멤버변수도, 생성자도 가질 수 없다.
인터페이스를 상속할 경우, 그 클래스는 인터페이스의 모든 메소드를 구현-오버라이딩해야 한다.
그리고 접근수준은 무조건 public!이어야만 한다.
interface 인터페이스명
{
** 불완전메소드...**
}
그리고 인터페이스의 상속은 extends가 아닌, implements로 수행한다.
그래서 인터페이스는 상속보단 구현이라 칭한다.
인터페이스는 불완전한 타입이므로, 그 자체로는 생성이 불가능하다. 때문에 구현한 자식클래스를 일정한 타입-규격으로 묶는 용도로만 사용된다.
이렇게 인터페이스와 구현체를 정의하면

인터페이스의 이름은 I로 시작하거나 able로 끝나는게 관례다.
여튼 저렇게 만들면

이런식으로 사용이 가능하다.
인터페이스는 클래스와 다르게 한번에 여러개를 구현할 수 있다. 다중상속이 가능하단 것이다.


인터페이스의 상속, 확장
인터페이스는 다른 인터페이스를 상속받을 수도 있다. 당연히 그 구현 의무들을 그대로 다 가져오는 것이다.
키워드는 extends를 쓴다.


추상 클래스
추상 클래스는 클래스와 인터페이스가 섞인 혼종이다. 일반 클래스처럼 필드, 메소드 등을 전부 구현할 수 있지만, 구현되지 않은 메소드를 집어넣을 수도 있다.
때문에 추상 클래스도 불완전 타입이라, 자체로는 생성이 불가능하다.
추상 클래스는 클래스 앞에 abstract만 붙여서 선언한다.
일부 디자인 패턴에 사용된다.
아래는 간단한 사용 예시다.
