-
위 글은 패스트캠퍼스 강의를 바탕으로 쓰여졌습니다.
다형성(polymorphism)이란?
- 하나의 코드가 여러 자료형으로 구현되어 실행되는 것
- 같은 코드에서 여러 다른 실행 결과가 나옴
- 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나
- 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있다.
IS-A 관계 (is a relationship : inheritance)
- 일반적인 개념과 구체적인 개념과의 관계
- 상위 클래스: 하위 클래스보다 일반적인 개념( 예: Employee)
- 하위 클래스: 상위 클래스보다 구체적인 개념들이 더해짐( 예: Engineer, Manager)
- 상속은 클래스간의 결합도가 높은 설계
- 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있음
- 계층구조가 복잡하거나 hierearchy가 높으면 좋지 않음
HAS-A 관계(composition)
- 클래스가 다른 클래스를 포함하는 관계 (변수로 선언)
- 코드 재사용의 가장 일반적인 방법
- Student가 Subject를 포함
- Library를 구현할 때 ArrayList 생성하여 사용
- 상속하지 않음