반응형
package www.earth.sun;
class Product {
int price;
int bonusPoint;
Product(int price) {
this.price = price;
bonusPoint = (int)(price/10.0);
}
}
class Tv1 extends Product {
Tv1() {super(300);
}
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 + "을/를 구매하셨습니다.");
}
}
public class Ex7_8 {
public static void main(String[] args) {
Buyer b = new Buyer();
b.buy(new Tv1());
b.buy(new Computer());
System.out.println("현재 남은 돈은 " + b.money +"만원입니다.");
System.out.println("현재 보너스 점수는 " + b.bonusPoint +"점입니다.");
}
}
다형성이란 여러 가지 형태를 가질 수 있는 능력을 말한다.
조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있다.
Tv1과 Computer 클래스는 Product 클래스를 상속받고 있다.
Tv1과 Computer 클래스는 Product 클래스의 자손이다.
따라서 buy() 메서드에 매개변수로 Product클래스를 상속받기만 하면, buy 메서드의 매개변수로 사용이 가능하다.
주의할 점은 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만,
반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다.
반응형
'Java' 카테고리의 다른 글
Java 추상클래스(abstract class)란 무엇인가? (1) | 2023.04.16 |
---|---|
Java 인터페이스(interface)란 무엇인가? (1) | 2023.04.09 |
Java println 출력이 되지 않는 이유 (0) | 2023.03.30 |
Java 메서드 return에 대해서 (0) | 2023.03.30 |
캡슐화와 접근 제어자 (0) | 2023.03.23 |