package class04;
class Card {
String name; // 멤버변수(인스턴스변수)
int limit;
static int bal = 200000; // 클래스변수
void use() {
this.use(10000); // 만원을 결제했을 때 아래 줄의 식을 use(int=10000) 으로 해서 쓰겠다.
}
void use(int money) { // 결제에 대한 로직
System.out.print(money + "원 사용: ");
if (money > this.limit) {
System.out.print("한도초과!");
} else if (bal < money) {
System.out.print("잔액부족!");
} else {
bal -= money;
}
System.out.println(" 남은 금액 " + bal + "원");
}
// 모듈화: 동일한 기능을 하나의 함수로 묶는 것
void showInfo() {
System.out.println(name + "님[남은금액: " + bal + "원]");
}
Card(String name) {
this(name, 200000); // 이름만 적혀있으면 결제한도를 20만원으로 정함
}
Card(String name, int limit) {
this.name = name;
this.limit = limit;
}
}
public class Test07_2 {
public static void main(String[] args) {
// 홍길동씨는 최초에 20만원 보유
// 카드1은 한도는 없다.
// 카드2의 한도는 2만원
Card card1 = new Card("홍길동");
Card card2 = new Card("홍길동", 20000);
Card.bal = 200000; // 카드의 잔액, ★★★초기화가 중요!!!★★★
card1.use(); // 10000원 사용: 남은 금액 190000원
card1.use(100000); // 100000원 사용: 남은 금액 90000원
card2.use(50000); // 50000원 사용: 한도초과! 남은 금액 90000원
card2.use(); // 10000원 사용: 남은 금액 80000원
card1.use(90000); // 90000원 사용: 잔액부족! 남은 금액 80000원
card1.showInfo(); // 홍길동님[남은금액: 80000원]
card2.showInfo(); // 홍길동님[남은금액: 80000원]
}
}