본문 바로가기

개발자노트

클래스)멤버변수와 클래스변수의 이해(카드사용예제)

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원]

	}

}