ch7-27,28 매개변수다형성
ch7-27 매개변수다형성
다형성의 장점은
1. 다형적 매개변수
2. 하나의 배열로 여러종류 객체 다루기.
가 있다.
⭐ 다형성 정리
1. 조상 타입의 참조 변수로 자손 객체 다루기. ex) Tv t = new SmartTv();
2. 참조 변수의 형변환 → 멤버 갯수 조절
3. instanceof 연산자 → 형변환 가능 여부 확인
Product라는 부모 클래스, Product를 상속받은 Tv, Computer, Audio 자손 클래스가 있다. 이를 사는 Buyer 클래스가 있다.
Buyer 클래스에 buy 메서드를 추가할 때, 매개변수로 new Tv( ); 만 들어올 수 있다. 하지만 다른 물건을 산다 할 때, 매개변수를 바꿔서 메서드를 다시 만들어줘야 한다. 메서드 이름은 같고 매개변수를 바꾼 것을 오버로딩이라 한다. 물건이 3개도 몇 백개가 넘을 수 있어 오버로딩 하는데 문제가 있다.
매개변수를 자손 타입이 아니라 조상 타입인 Product를 쓴다.
바꾼 메서드로 b.buy(tv); b.buy(com); 둘 다 사용할 수 있다.
다형성의 특징이 조상 참조 변수로 자손 객체를 다룰 수 있기 때문에, 메서드 하나로 Tv, Computer, Audio 객체를 다룰 수 있다.
실습
Buyer 클래스 buy 메서드의 참조 변수 타입을 조상인 Product를 사용해서 b.buy(new Tv1()); b.buy(new Computer()); 가 가능하다.
System.out.println(p + "을/를 구입하셨습니다.");와 System.out.println(p.toSring() + "을/를 구입하셨습니다.");은 같은 문장이다. 참조변수와 문자열을 결합할 때는 toString을 호출해서 결합한다.
toString 메서드에 반환값을 Tv, Computer이므로 콘솔에 상품명이 찍힌다.