추상 클래스
extends
ㄴ하나만 상속(확장) 가능
- 생성자를 정의할 수 있음.
- 단독으로 인스턴스 생성할 수 없음. (상속받아야만 사용 가능)
- 변수: 인스턴스 변수 / static 변수를 선언할 수 있음.
- 추상 메소드도 접근제어자 다양
- 내용의 정의된 메소드 가능.
- 추상 메소드에는 abstract 키워드를 선언해야 함.
- abstract 메소드는 private 지시자를 선언할 수 없음. (오버라이드 때문)
- abstract 메소드는 규격만 선언함.
- 상속(확장)받는 클래스는
- abstract 메소드를 반드시 오버라이드해야 함.
- abstract 메소드를 반드시 구현해야 함.
일반 클래스와의 차이점
- 인스턴스를 생성할 수 없음.
- 추상메소드를 선언할 수 있음.

인터페이스
implements
ㄴ여러개의 인터페이스 의존 가능
ㄴ상속/확장보다는 메소드를 구현해야 하는 규약으로 많이 쓰므로 생성자를 정의할 수 없음.
ㄴ현업에서 추상 클래스보다 많이 씀.
- 생성자를 정의할 수 없음.
- 단독으로 인스턴스 생성할 수 없음.
- 변수:
- 인스턴스 변수를 선언할 수 없음.
- 무조건 public static final임.
- 추상 메소드는 public 고정.
- 내용이 정의된 메소드는 public default void로 고정.
- 정적 메소드도 public static 으로 고정.
- 메소드:
- default / static 이 아닌 메소드는 모두 public abstract 임.
- default / static 메소드는 모두 public 임.
- 구현하는 클래스는
- abstract 메소드를 반드시 오버라이드 해야 함.
- abstract 메소드를 반드시 구현해야 함.
추상클래스와 인터페이스를 동시에 쓸 수 있음.



interface의 메소드 종류
- public abstract method()
- public default method() -> default method()
- public static method() -> static method()