Ch7-27~28. 매개변수 다형성
0. 목차
Chapter7. 객체지향 프로그래밍Ⅱ
Ch7 - 27. 매개변수의 다형성
Ch7 - 28. 매개변수의 다형성 예제
Ch7 - 27. 매개변수의 다형성
▶ 다형성의 장점
▷ 다형적 매개변수
▷ 하나의 배열로 여러 종류의 객체 다루기
▶ 다형성 정리
▷ Tv t = new SmartTv();
: 조상 = new 자손();
▷ 참조변수의 형변환(리모콘 바꾸기) : 사용가능한 멤버개수 조절
▷ instanceof 연산자 : 형변환 가능여부 확인
▶ 매개변수의 다형성이란?
▷ 참조형 매개변수는 메서드 호출 시,
▷ 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있음
Ch7 - 28. 매개변수의 다형성 예제
▶ 제품과 구매자 관리
▷ 제품
▷ 제품마다 buy 메서드에 오버라이딩하여 구매자 관리
오버라이딩 → 코드 중복 발생
▷ 제품들의 조상인 Product 클래스를
▷ 다형적 매개변수로 받아 하나의 메서드로 구매자 관리
▶ 예제 클론 코딩
▷ class Product
- price
- point(price의 10%)
public class Product { int price; int point; Product() { } Product(int price) { this.price = price; point = (int) (price / 10.0); } }
▷ class Tv
- Product 상속
- super로 price 호출 = 100
- Object의 toString으로 return “TV”
class Tv extends Product { Tv() { super(100); } public String toString() { return "TV"; } }
▷ class Computer
- Product 상속
- super로 price 호출 = 200
- Object의 toString으로 return “Computer”
class Computer extends Product { Computer() { super(200); } public String toString() { return "Computer"; } }
▷ class Buyer
- myMoney, myPoint
- 제품 price가 myMoney보다 작을 시, 잔액 부족 메세지 출력
- myMoney에서 price차감
- myPoint에서 point증가
class Buyer { Buyer() { } int myMoney = 400; int myPoint = 0; void buy(Product p) { if (myMoney < p.price) { System.out.println("잔액이 부족합니다."); return; } else { myMoney -= p.price; myPoint += p.point; System.out.println(p + " 구매를 선택"); } } }
▷ class Act
- Buyer 객체 생성
b.buy(new Tv()); = Product p = new Tv; = b.buy(p);
class Act { public static void main(String[] args) { Buyer b = new Buyer(); b.buy(new Tv()); b.buy(new Computer()); System.out.printf("잔액은 %d만원 입니다.\n", b.myMoney); System.out.printf("잔여 포인트는 %d점 입니다.", b.myPoint); } } // console TV 구매를 선택 Computer 구매를 선택 잔액은 100만원 입니다. 잔여 포인트는 30점 입니다.