반응형
[Java, 객체지향] 다형성이란? (Polymorphism)
다형성이란?
다형성은 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다.
즉, 같은 코드에서 여러 실행 결과가 나오는 것,
조상 타입 참조 변수로 자손 타입 객체를 다루는 것이다.
ex.
Customer c = new VIPCustomer();
조상 타입(Customer) 참조 변수(c)로
자손 타입(VIPCustomer) 객체를 다룸
다형성은 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이며
객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징이다.
참조변수가 조상 타입일 때와 자손 타입일 때의 다른 점은,
사용할 수 있는 멤버의 개수이다.
다형성을 사용하는 장점
다양한 여러 클래스를 하나의 자료형으로 선언하거나
형변환하여 각 클래스가 동일한 메서드를 오버라이딩한 경우,
하나의 코드로 다양한 구현을 실행할 수 있다.
유사한 클래스가 추가되는 경우 유지보수에 용이하고
각 자료형마다 다른 메서드를 호출하지 않으므로 코드에서 많은 if문이 사라진다.
구체적으로 말하자면, 아래와 같다.
1. 매개변수의 다형성
참조형 매개변수는 메서드 호출 시,
자신과 같은 타입이나 자손 타입의 인스턴스를 넘겨줄 수 있다.
2. 하나의 배열에 여러 종류의 객체를 저장할 수 있다
보통은 하나의 배열에는 한 종류의 객체만 저장할 수 있다.
하지만 다형성을 이용하면
하나의 배열에 여러 종류의 객체를 저장할 수 있다.
즉, 조상 타입의 배열에 자손 타입의 객체를 담을 수 있다.
(출처: 유튜브 남궁성의 정석코딩)
반응형
'Java' 카테고리의 다른 글
[Java, 객체지향] 오버로딩이란? (overloading) (0) | 2021.08.11 |
---|---|
[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance) (0) | 2021.08.11 |
[Java, 객체지향] 가상 메서드 (virtual method) (0) | 2021.08.11 |
[Java, 객체지향] 오버라이딩, @Override Annotation(오버라이드 어노테이션) (0) | 2021.08.11 |
[Java, 객체지향] 하위 클래스가 생성되는 과정 & 업캐스팅/다운캐스팅 (0) | 2021.08.11 |