클래스간 공통점을 찾아서 공통의 조상을 만드는 작업
- 선언되어있으나 구현되어 있지 않은 메소드
- abstract 키워드를 붙여 선언
ex) public abstract in getValue();- 서브클래스에서 오버라이딩하여 재 구현 해주어야 함(강제성부여)
- 추상메소드를 하나라도 가진 클래스
- abstract 키워드를 붙여 선언
- 혹은, 추상 메소드가 하나도 없지만 클래스앞에 abstract 키워드가 붙은 경우.
- 추상 클래스 자체로 객체를 생성할 수 없다.
- 상속관계에서 서브클래스가 반드시 구현해야 함을 알리때 사용(강제성)
- 슈퍼클래스에는 개념적 특징을 정의하고 서브클래스에는 구체적 행위를 구현하여 설계와 구현을 분리 할 수 있다.
클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않습니다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있습니다. 하지만 인터페이스(interface)는 오로지 추상 메소드와 상수만을 포함할 수 있습니다
- 모든 메소드가 추상메소드인 클래스
- 상수와 추상메소드로만 구성되어있어 변수를 필드에 선언 불가
(Java 8 버전 부터는 일반메소드도 선언가능)-> default, static- interface 키워드를 붙여 선언
-> public interface Cod(){...}- 인터페이스는 객체 생성이 불가능
- implements를 사용한다.
- 인터페이스를 상속하여 확장된 인터페이스 작성가능
- 다중 구현 가능
- 인터페이스에는 선언만 하여 선어부와 구현부를 나누어 작성 가능
- implements 키워드 사용하여 구현
- 여러 개의 인터페이스를 동시에 구현할 수있다.
- 상속과 구현이 동시에 가능
- final, abstact 생략 가능
- 하나의 클래스가 여러개의 인터페이스를 구현 할 수 있다.
- 인터페이스끼리도 상속이 가능하다.
- 변수도 선언 가능하다.
- 일반 메소드 포함 가능
- 모든 서브 클래스에 공ㅇ통된 메소드가있는경우에는 추상클래스가 적합
- 상수만 가능하다.
모든메소드가 추상메소드- 상수만 필드에 포함 가능
- 다중 구현 지원