다음 요구사항에 맞게 데이터 구현
- 요구사항
- 다음 데이터는 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();
}
}
'국비교육 > 국비교육 복습' 카테고리의 다른 글
day12_oop.inherit3 : 슈퍼 클래스로부터의 상속 + 접근제한 protected (★) (0) | 2022.08.14 |
---|---|
day11_oop.keyword10 : final 키워드 - 오직 1번만 변수의 초기화를 허용 (0) | 2022.08.13 |
day11_oop.keyword4 : static 메소드 - 클래스를 인스턴스 생성하지 않고도 메소드 호출 가능 (★) (0) | 2022.08.13 |
day10_oop.modifier4 : 경찰 객체 생성시 총 객체를 자동으로 소유하도록 (★★) (0) | 2022.08.13 |
day10_oop.modifier2 : 접근제한을 붙여서 클래스 생성 (0) | 2022.08.13 |