자바의정석

[자바의 정석 - 기초편] ch7-27,28 매개변수다형성

유호야 2022. 3. 21. 20:48
반응형

ch7-27 매개변수의 다형성 (장점)

1) 다형적 매개변수 
2) 하나의 배열로 여러 종류 객체 다루기

- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다. 


- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.

(1) Tv t 조상 = new SmartTv(); 자손

(2) 참조변수의 형변환, 사용 가능한 멤버 갯수 조절 - 리모콘 바꾸기 

(3) instanceof 연산자 - 형변환 가능여부 확인

 

다형성의 장점
메서드 하나로, Product p1 = new Tv(); 와 같이 여러 객체를 매개변수로서 사용할 수 있다.


참조변수와 문자열을 결합할 때는 
p > p.toString 과 같이 변환한다. 

package ch07;

class Product {
	int price;
	int bonuspoint;
	
	Product(int price){
		this.price = price; 
		this.bonuspoint = (int)(price*0.1);
	}
}

class Tv extends Product {
	Tv() {
		super(100);
	}
	
	public String toString() {
		return "TV";
	}

}

class Computer extends Product {
	Computer() {
		super(200);
	}
	
	public String toString() {
		return "Computer";
	}
}

class Buyer {
	int money = 1000;
	int bonusPoint = 0;

	void buy(Product p) {
		if(money < p.price) {
			System.out.println("돈이 부족해서 구매할 수 없습니다.");
			return;
		}
		money -= p.price;
		bonusPoint += p.bonuspoint;
		
		System.out.println("구매한 제품은 "+ p + "입니다.");
		System.out.println("현재 남은 돈은 "+ money + " 원 입니다. ");
		System.out.println("포인트 잔액은 "+ bonusPoint + "점입니다.");
		
	}
}

public class Ex7_8 {
	
	public static void main(String args[]) {
		Buyer b = new Buyer();
		b.buy(new Tv());
		
	}
	
	
}
반응형