구체적으로 어떤 인스턴스를 만드는지 서브 클래스가 정함.
다양한 구현체가 있고 그 중 특정한 구현체를 만들 수 있는 다양한 팩토리를 제공
extends
- 부모에서 선언/정의를 모두하며 자식은 메소드/변수를 그대로 사용할 수 있음
implements (interface 구현)
- 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의) 해서 사용해야함
abstract
- extends와 interface 혼합. extends하되 몇 개는 추상 메소드로 구현되어 있음
java8
- default method, static method 구현 가능
- 이전 버전에서는 추상 메서드만 정의할 수 있었음.
- java8 부터 interface에도 기본 구현체를 만들 수 있게 됨.
- 추상클래스에서 하던 일을 인터페이스에 있는 default method를 사용함.
java9
- interface 에서 private method 사용 가능