
- 클래스와 인터페이스로 나뉨
- 클래스는 일반 클래스와 추상클래스로 나뉨
- 일반 클래스는 앞에 클래스만 붙어있다.
추상클래스는?
- 클래스앞에 abstract글자가 붙어있음
- 클래스 안에 추상 메서드가 한개라도 있으면 추상클래스로 정의 되어야한다.
추상메서드는?
- 구체적이지 않은 메서드
- 중괄호없이 괄호만 정의되고 뒤에 세미콜론이 붙음
- 객체를 만들수가 없음 (자식클래스를 상속을 해서 만들어야 함)
인터페이스는?
- 모든 메서드가 추상메서드로 구성 되어야 한다.
- 모든 필드가 스태틱 파이널로 선언 되어야 한다.
- 접근 제한자가 public이어야 한다.
인터페이스를 absstract를 써서 추상클래스로 만들어도 되지만, 인터페이스의 모든 조건을 갖췄다면 인터페이스를 쓰는게 낫다.

오버라이딩 vs 구현하기
- 오버라이딩(overriding)
부모클래스의 메서드(완성 또는 미완성)을 자식클래스에서 재정의(완성)
- 구현하기(implements)
부모클래스의 미완성메서드(추상메서드)를 자식클래스에서 재정의(완성)
- 메서드의 완성과 미완성의 구분 기준 -> 중괄호의 존재여부


