본문 바로가기

국비교육/국비교육 복습

day11_oop.keyword7 : static 변수 (클래스 변수)

다음 요구사항에 맞게 데이터 구현

 

- 요구사항

  • 다음 데이터는 KH은행의 "내집마련 장기적금" 계좌에 대한 정보입니다.
  • 모든 통장은 동일한 기본이율을 적용받습니다.
  • 모든 통장의 잔액은 음수일 수 없습니다
  • 모든 통장의 기본이율, 우대이율은 음수일 수 없습니다

- 데이터

 

Account 클래스

package day10_oop.keyword7;

public class Account {

	// 멤버 필드
	private String name;
	private static double basicRate;
	private double plusRate;
	private long balance;
	
	// getter & setter
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPlusRate() {
		return plusRate;
	}

	public void setPlusRate(double plusRate) {
		if(plusRate < 0) {
			return;
		}
		this.plusRate = plusRate;
	}

	public long getBalance() {
		return balance;
	}

	public void setBalance(long balance) {
		if(balance < 0) {
			return;
		}
		this.balance = balance;
	}
	
	// 생성자 (static은 인스턴스 생성시마다 초기화할 필요가 없다)
	Account(String name, double plusRate, long balance){
		this.setName(name);
		this.setPlusRate(plusRate);
		this.setBalance(balance);
	}
	
	// static에 대한 getter & setter : static은 getter & setter도 static이다
	public static double getBasicRate() {
		return basicRate;
	}
	
	public static void setBasicRate(double basicRate) {
		if(basicRate < 0) {
			return;
		}
		Account.basicRate = basicRate;
	}
	
	// static 전용 초기화 구문
	static {
		setBasicRate(1.2);
	}
	
	
	// 출력 메소드
	public void print() {
		System.out.println("이름 : " + this.name);
		System.out.println("기본이율 : " + Account.basicRate);
		System.out.println("우대이율 : " + this.plusRate);
		System.out.println("잔액 : " + this.balance);
		System.out.println();
	}
}

 

1) static이 붙은 변수(클래스 변수)는 getter & setter도 static이다

2) setter 메소드에서 this. 대신 클래스명.을 입력한다 (Account.basicRate = basicRate;)

// static에 대한 getter & setter : static은 getter & setter도 static이다
public static double getBasicRate() {
	return basicRate;
}
	
public static void setBasicRate(double basicRate) {
	if(basicRate < 0) {
		return;
	}
	Account.basicRate = basicRate;
}

 

3) static이 붙은 변수(클래스 변수)는 객채 생성시마다 초기화할 필요가 없다 (생성자에 포함되지 않는다)

4) static 전용 초기화 구문이 있다

// static 전용 초기화 구문
static {
	setBasicRate(1.2);
}

 

메인 메소드

package day10_oop.keyword7;

public class Test01 {

	public static void main(String[] args) {
		
		// 객체 생성
		Account a = new Account("유재석", 0.3, 5000000);
		Account b = new Account("강호동", 0.5, 3500000);
		Account c = new Account("신동엽", 0.2, 8000000);
		
		// 정보 출력
		a.print();
		b.print();
		c.print();
	}
}