-
[JAVA] 다형성(polymorphism)과 다운 캐스팅(downcasting)Language/Java 2021. 6. 5. 23:16
다형성(polymorphism)- 하나의 코드가 여러 자료형으로 구현되어 실행되는 것
- 같은 코드에서 여러 다른 결과가 나온다.
- 객체지향 프로그래밍의 가장 큰 특징 중 하나이다.
- 다형성을 사용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 개발할 수 있다.
다형성 예시
- 다형성을 사용하는 경우 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있다.
- 다른 동물을 추가하는 경우 공통의 Animal클래스에서 상속을 받아 추가적으로 필요한 부분만 구현을 할 수 있다.
- 여러 클래스를 하나의 타입(상위 클래스)로 핸들링할 수 있다.
상속을 사용할 때?IS-A관계(is a relationship : inheritance)
- 일반적인 개념과 구체적인 개념과의 관계
- 상위 클래스: 하위 클래스보다 일반적인 개념
=> Employee클래스.. - 하위 클래스: 상위 클래스보다 구체적인 개념들이 더해짐
=> Engineer 클래스, Manager 클래스.. - 상속은 클래스간의 결합도가 높은 설계
- 상위 클래스의 수정이 많으면 하위 클래스에 영향을 미칠 수 있음
- 계층구조가 복잡하거나 hierarchy가 높으면 좋지 않음
HAS-A관계(composition)
- 클래스가 다른 클래스를 포함하는 관계
- 코드 재사용의 가장 일반적인 방법
- 상속하지 않음
다운 캐스팅(downcasting)
- 업 캐스팅(upcasting)된 클래스를 원래의 타입으로 형 변환
- 하위 클래스로의 형 변환은 명시적으로 해야한다.
Customer vc = new VIPCustomer( );
VIPCustomer Vipcustomer = (VIPcustomer)vc;'Language > Java' 카테고리의 다른 글
[JAVA/디자인패턴] 템플릿 메서드(Template Method) (0) 2021.06.06 [JAVA] 추상 클래스(abstract class) (0) 2021.06.06 [JAVA] 클래스 상속 (0) 2021.06.05 [JAVA] ArrayList클래스 (0) 2021.06.03 [JAVA/디자인패턴] 싱글톤 패턴(singleton pattern) (0) 2021.06.03