매개변수 다형성
지금까지는 다형성이 뭔지를 공부했다면, 이번시간에는 다형성의 장점에 대해서 공부할 것이다.
우선, 다형성에 대해서 먼저 다시 정리를 해보자.
1. 조상타입의 참조변수로 자손 객체를 다루는 것.
2. 참조변수의 형변환 - 리모컨 바꾸기
3. instanceof 연산자 - 형변환 가능 여부 체크
앞서배운 이것들을 기억하고 있어야, 다음 설명들이 이해된다.
[다형성의 장점]
- 다형적 매개변수
- 하나의 배열로 여러종류 객체 다루기
먼저, 다형성의 첫번째 장점인 다형적 매개변수에 대해서 알아보자.
매개변수의 다형성
- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.
매개변수가 참조형이면, 메서드 호출할 때, 이 매개변수로 자신과 같은 타입 또는 자손타입을 매개변수로 넘겨줄 수 있다.
이것이 어떤 장점이 되는지 알아보자.
예를 들어서 위의 코드처럼 Product클래스가 있다고 가정해보자.
price는 제품 가격, bonusPoint는 이 물건을 구매했을 떄 주는 보너스 점수를 의미한다.
그리고 Product의 자손으로 Tv, Computer, Audio등이 있다.
그리고 Buyer클래스가 있는데, 이것은 물건사는 사람을 표현한 것이다.
이 사람이 소유한 돈을 money, 물건산것에 대한 보너스점수를 bonusPoint라고 했다.
이렇게 되어 있을 때, 이사람이 물건을 살 수 있게,
buy라는 메서드를 추가하려고 한다.
근데, 이 buy메서드의 매개변수 타입을 Tv로 했다. 그러면, 매개변수로 들어올 수 있는 것은 new Tv(); 객체이다.
즉, Tv만 살 수있다.
다른물건을 사려면?
이런식으로 매개변수 타입이 Computer인 것과, Audio인 것 등의 메서드가 있어야 한다.
메서드 이름이 같고, 매개변수 타입만 다르므로, "오버로딩"이다.
근데, 물건 종류가 굉장히 많다.
새로운물건이 계속나올때 마다 buy메서드를 생성해서 Buyer클래스에 계속 추가해 줄 수 없다. 너무 불편할 것이다.
이 많은 메서드를 오버로딩해야하면, 관리도 힘들고, 코드 중복도 발생한다.
그래서 이 코드를 어떻게 바꿀 것이냐면,
이런식으로 바꿔 줄 것이다.
매개변수에 Tv타입을 쓰는게 아니라, 조상타입인 Product타입을 쓸 것이다.
그러면, 어떤 일이 벌어지냐면, 이 메서드 하나로 여러 물건을 살 수 있다.
다형성에 의해서 조상타입의 참조변수로 자손객체를 가리킬 수 있다.
그래서Tv객체도 매개변수 Product에 들어올 수 있고, Computer도 들어올 수 있고, Audio도 들어올 수 있는 것이다.
그러면, 아까처럼 메서드를 여러개 만들 필요없이,
매개변수 타입이 Product인 buy메서드 하나로 모든 물건들을 살 수 있다.
이것이 바로 다형성의 첫번째 장점이다.
이게 바로
- 다형적 매개변수
의 장점이다.
[Ex7_8]
'JAVA' 카테고리의 다른 글
추상 클래스, 추상 메서드 (0) | 2022.04.05 |
---|---|
여러 종류의 객체를 배열로 다루기 (0) | 2022.04.04 |
instanceof 연산자 (0) | 2022.04.03 |
참조변수의 형변환 (0) | 2022.04.03 |
다형성 (0) | 2022.04.02 |
댓글
이 글 공유하기
다른 글
-
추상 클래스, 추상 메서드
추상 클래스, 추상 메서드
2022.04.05 -
여러 종류의 객체를 배열로 다루기
여러 종류의 객체를 배열로 다루기
2022.04.04 -
instanceof 연산자
instanceof 연산자
2022.04.03 -
참조변수의 형변환
참조변수의 형변환
2022.04.03