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이므로 콘솔에 상품명이 찍힌다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-31,32 추상 클래스, 추상 메서드 (0) | 2023.04.22 |
---|---|
ch7-29,30 여러 종류의 객체를 배열로 다루기 (0) | 2023.04.21 |
ch7-26 instanceof 연산자 (0) | 2023.04.19 |
ch7-24,25 참조변수의형변환(2) (0) | 2023.04.19 |
ch7-24,25 참조변수의형변환(1) (0) | 2023.04.19 |