매개변수의 다형성
1. 참조형 매개변수는 메서드 호출시 , 자신과 같은 타입 or 자손타입의 인스턴스를 넘겨줄 수 있다.
설명서
제품가격과 보너스점수를 멤버로 정의한 Product클래스를 정의하고...
모든 제품은... Product클래스를 상속받도록 하였습니다.
그래서 Tv, Computer, Audio클래스는 Product클래스를 상속받았습니다.
Buyer클래스는 물건을 사는 사람... 구매자를 클래스로 정의한 것이고요.
멤버변수로 가진돈과 보너스점수를 정의하였습니다.
Buyer클래스에... 제품을 구입하는 기능의 buy메서드를 추가하려고 합니다.
그래서... Tv를 구입할 수 있는 buy메서드를 이와 같이 구현하였습니다.
매개변수로 Tv타입의 참조변수를 선언하고...
Tv의 가격인 price의 금액을 buyer가 가진 돈인 money에서 빼고...
Tv의 보너스점수를 buyer의 bonusPoint에 더해줍니다.
그런데... 이 buy메서드로는 Tv밖에 살 수 없습니다.
그래서 Computer를 사기 위해서는 Computer타입의 참조변수를 매개변수로 하는 메서드를
하나 더 정의해야합니다.
이런식이면... 새로운 제품이 추가될 때마다...
buy메서드를 새로 만들어줘야 합니다.
그래서... buy메서드의 매개변수를 Tv타입이 아닌... 이들의 공통 조상인 Product타입으로 정의해야합니다.
Product클래스는 모든 제품 클래스의 조상이라서...
Tv인스턴스, Computer인스턴스, Audio인스턴스를 참조할 수 있기 때문이죠.
이렇게 하면... 새로운 제품클래스가 추가되어도... 새로운 buy메서드를 추가할 필요없이...
Product타입의 참조변수를 매개변수로 하는 buy메서드 하나면 끝납니다.
이처럼... 매개변수의 타입을 공통조상타입으로 정의하면 여러종류의 자손인스턴스를 넘겨 받을 수 있는데요.
이것을 ... 매개변수의 다형성이라고 합니다.
자손인스턴스를 조상타입의 참조변수로 다루면... 이러한 장점이 있는 것입니다.
'Backend > java' 카테고리의 다른 글
여러 종류의 객체를 하나의 배열로 다루기2 ( Vector ) (0) | 2018.08.12 |
---|---|
여러 종류의 객체를 하나의 배열로 다루기 (0) | 2018.08.12 |
참조변수와 인스턴스변수의 연결 (0) | 2018.08.12 |
Instanceof 연산자란 무엇인가. (0) | 2018.08.12 |
참조변수의 형변환 예제 (0) | 2018.08.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상