다형성(Polymorphism)
- 객체 지향 프로그래밍의 중요 특징
- 추상화(일반화), 구체화
- 추상성이 높은 수준에서 구조를 단순화 할 수 있음 상속, 인터페이스 등 이런걸로 다형성을 표현한다.
추상 클래스⭐️
public abstract class class-name
- new 연산으로 인스턴스 생성 불가
- 오직 파생 클래스를 위해 존재하는 클래스
- 설계적인 관점에서 존재
- 추상 메서드를 가지는 것인 일반적
- abstract void getA()
- 선언만 있고 정의가 없음
- 파생 형식에서 반드시 재정의 해야 함
- 개인적으로 인터페이스있는데 이거 왜있는지 모르겠음…
- 추상 클래스가 추상 메서드 가진다.
- 클래스긴 하므로 필드를 가질 수 있다.
- 일반 메서드도 가질 수 있다.
- 진짜 껍데기만 남기면 되면 인터페이스를 쓰면 된다!!!
인터페이스⭐️
- 필드를 가지지 않는 추상 클래스를 선언하는 것으로 이해가 가능하다. (단, 상수 필드는 가질 수 있음)
- 인터페이스의 파생은 implements
- 인터페이스는 메서드 원형을 기술하기 위한것으로 구체적 적의가 없는 순수한 '선언'에 해당
- 심볼릭 상수 정의 → 상수 변수 정의는 된다.
- C의 헤더 파일과 유사한 의미
- 다중 상속 가능(클래스가 아니라 허용해주는감?)
- 인터페이스에 메서드 정의하면 abstract 가 자동으로 붙는다 생각하면된다.
열거형
public enum enum-name{value#0, value#n}
- 심볼릭 상수를 정의할 수 있는 문법으로 형안정성을 제공하고 가독성 좋은 코드 만들 수 있다.
- java.lang,Enum의 파생 클래스
- 주요 멤버
- values(), valueOf(String name)
- name()
- ordinal()
- toString()
