※ 이 글은 자바의정석을 참조하였다.
1. 추상클래스란?
- 클래스가 설계도라면 추상클래스는 ‘미완성 설계도’
- 추상메서드를 포함하고 있는 클래스
- 일반메서드가 추상메서드를 호출할 수 있다.
- 미완성된 설계도 이므로 인스턴스를 생성할 수 없다.
- 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다.
2. 인터페이스란?
- 일종의 추상클래스. 추상클래스보다 추상화 정도가 높다.
- 실제 구현된 것이 전혀 없는 기본설계도
- 추상메서드와 상수만을 멤버로 가질 수 있다.
- 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.
- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다.
3. 인터페이스의 작성
- class대신 interface 를 사용하고 클래스 작성과 동일
- 구성요소(멤버)는 추상메서드와 상수만 가능하다.
4. 인터페이스의 상속
- 인터페이스도 클래스처럼 상속이 가능하다.(클래스와 달리 다중상속 허용)
- 인터페이스는 Object클래스와 같은 최고 조상이 없다.
5. 인터페이스의 구현
- 인터페이스를 구현하는것은 클래스를 상속 받는 것과 같다.
다만 ‘extends’ 대신 ‘implements’를 사용한다. - 인터페이스에 정의된 추상메서드를 완성해야 한다.
- 상속과 구현이 동시에 가능하다.
6. 인터페이스를 이용한 다형성
- 인터페이스 타입의 변수로 인터페이스를 구현한 클래스의 인스턴스를 참조할 수 있다.
- 인터페이스를 메서드의 매개변수 타입으로 지정할 수 있다.
- 인터페이스를 메서드의 리턴타입으로 지정할 수 있다.
7. 인터페이스의 장점
- 개발시간단축
- 표준화가 가능
- 서로 관계 없는 클래스들에게 관계를 맺어 줄 수 있다.
- 독립적인 프로그래밍이 가능