Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 다형성
- 보조 스트림
- 자료형
- 자바
- 인터페이스
- 메서드
- 졸리다
- 문자 단위 스트림
- 배열
- 개발자
- SSR
- 변수
- 초보개발자
- 백엔드
- node.js
- 인스턴스
- FileInputStream
- ArrayList
- throws
- 코린이
- Java
- 바이트 단위 스트림
- 파이팅
- exception
- 새벽공부
- 상속
- 예외 처리
- try-catch
- 코딩
- MPA
Archives
- Today
- Total
SHUSTORY
08-5 다형성 활용하기 본문
728x90
- 다형성을 활용하면 프로그램을 유지보수하는 데 매우 편리하다.
- 이 때 배열을 함께 사용하면 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수 있다.
일반 고객과 VIP 고객의 중간 등급 만들기
[ GOLD 고객 ]
- 제품을 살 때는 항상 10% 할인해 준다.
- 보너스 포인트를 2% 적립해 준다.
- 담당 전문 상담원은 없다.
위 등급의 고객을 Customer 클래스를 상속받아 GoldCustomer 클래스를 만들어 구현해보자.
Customer 클래스를 상속받았기 때문에 지불 가격과 보너스 포인트를 계산하는 calcPrice( ) 메서드만 재정의하여
새로운 기능을 쉽게 추가하여 구현할 수 있다.
배열로 고객 5명 구현하기
- VIP고객 1명, GOLD고객 2명, SILVER고객 2명을 객체 배열 ArrayList를 사용해 구현해보자.
- 각 고객이 10,000원짜리 상품을 구매한 결과를 출력해보자.
배열의 자료형을 Customer로 지정하고, VIPCustomer 클래스와 GoldCustomer 클래스 모두 Customer에서 상속받은
클래스이므로 Customer형으로 선언한다.
이렇게 선언하면 이 배열은 Customer, GoldCustomer, VIPCustomer 모두 사용 가능하다.
그리고 이 배열에 Customer의 하위 클래스의 인스턴스가 추가될 때 모두 Customer형으로 묵시적 형 변환이 된다.
- 향상된 for문을 사용하여 고객 정보 및 할인율과 보너스 계산을 출력했다.
- 고객 정보를 출력하는 showCustomerInfo( )는 재정의하지 않았으므로 Customer 클래스에 구현된 메서드가 호출됐다.
- 고객 정보를 ArrayList 배열에 저장할 때 Customer형으로 형 변환을 하여 추가하였기 때문에 배열 요소를 하나씩 가져올 때도 Customer형으로 가져오게 된다.
- 각 인스턴스가 calcPrice( ) 메서드를 호출하면 현재 이 변수의 실제 인스턴스가 무엇이냐에 따라 재정의한 메서드를 각각 호출하여 계산한다.
* 한 클래스가 여러 클래스를 상속받는 것을 다중 상속이라고 한다. 자바는 다중 상속을 지원하지 않는다.
'프로그래밍 > JAVA' 카테고리의 다른 글
09-1 추상 클래스 (0) | 2023.03.02 |
---|---|
08-6 다운 캐스팅과 instanceof (0) | 2023.03.02 |
08-4 다형성 (1) | 2023.02.25 |
08-3 메서드 오버라이딩 (0) | 2023.02.25 |
08-2 상속에서 클래스 생성과 형 변환 (0) | 2023.02.25 |