추상 클래스
클래스가 설계도면 추상 클래스는 미완성 설계도
추상 메서드
선언부만 있고 구현부가 없는 메서드
정리 :
- 일반 메서드가 추상 메서드를 선언부를 이용해 호출 가능
- 완성된 설계도가 아님. 인스턴스 생성 불가
- 추상 클래스는 다른 클래스를 작성하는데 도움을 줄 목적으로 작성 됨.
- 클래스나 메서드를 선언할때 앞에 abstract를 붙여 줘야 함
- 공통된 메서드명 이지만 구현부를 다르게 구현할 때 사용. (예 : 자동차,비행기, 배 등의 교통수단은 모두 움직이지만 방식임 달름)
- 꼭 다 구현할 필요는 없지만 자손 클래스에서 조상의 추상 클래스를 모두 구현하지 않는다면 자손 클래스에 abstract를 붙여줘야 하고 이 자손클래스는 인스턴스 생성 불가.
인터페이스
추상메서드의 집합. 실제 구현된 것이 전혀 없는 설계도 이고 모든 멤버 변수는 public 이다.
- 추상클래스와 유사하지만 추상클래스보다 추상화 정도가 높다.
- 인터페이스도 인스턴스 생성 불가. 클래스 작성에 도움을 주는 목적으로 사용.
- 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용.
- 원래 인터페이스 안의 구성요소를 작성할때 멤버변수는 public static final 메서드는 public abstract 를 앞에 붙여줘야 한다. 하지만 항상 인터페이스 안의 요소들은 당연히 해당되기 때문에 생략 가능이다.
- 인터페이스는 클래스와 달리 다중 상속이 가능하고 클래스는 상속과 구현 모두 가능하다.
- 인터페이스는 object 클래스와 같은 조상이 없다.
- 추상 클래스와 같이 인터페이스도 추상 메서드를 완성 해야한다.
- 추상 클래스와 인터페이스의 공통점은 추상 메서드를 가지고 있다는 것.
- 추상 클래스와 인터페이스의 차이점은 인터페이스는 iv를 가질 수 없다는 것.
- 인터페이스는 추상 클래스를 일반 클래스가 상속 할때 extends를 사용하지만 인터페이스는 구현 할때 implements 를 사용.
- 인터페이스 타입의 매개변수는 인터페이스를 구현한 클래스의 객체만 가능하다는 뜻 입니다.
- 인터페이스를 리턴 타입으로 지정 할 수 있다. 인터페이스를 구현한 클래스의 인스턴스를 반환