728x90
05. 은행 계좌 만들기 (5)
1 입금, 출금
2 접근제어자
3 계좌이체
4 생성자
5> this
5. this
일반 메소드에서의 사용
우리가 Person클래스에서 만든 setName메소드의 파라미터 이름(pName)을 name으로 바꾸고 이 클래스로 생성된 인스턴스 변수 name을 this을 사용해서 바꾸어 변수 name과 파라미터 변수 name를 한눈에 구별할 수 있습니다.
일반 메소드에서 모두 this를 사용하여 바꿔보세요.
생성자에서의 사용
생성자에서도 동일하게 모두 this를 사용하여 적용 가능합니다. 바꿔보세요!
A. 최종 해설
BankAccount 클래스
public class BankAccount {
private int balance;
private Person owner;
public void setBalence(int balence) {
this.balance = balence;
}
public int getBalence() {
return balance;
}
public void setOwner(Person owner) {
this.owner = owner;
}
public Person getOwner() {
return owner;
}
boolean deposit(int amount) {
if (amount >= 0 && amount <= owner.getCashAmount()) {
balance += amount;
owner.setCashAmount(owner.getCashAmount() - amount);
System.out.println(amount + "원 입금하였습니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
return true;
} else {
System.out.println("입금 실패입니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
return false;
}
}
boolean withdraw(int amount) {
if (amount >= 0 && amount <= balance) {
balance -= amount;
owner.setCashAmount(owner.getCashAmount() + amount);
System.out.println(amount + "원 출금하였습니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
return true;
} else {
System.out.println("출금 실패입니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
return false;
}
}
public boolean transfer(BankAccount to, int amount) {
boolean success;
if (amount >= 0 && amount <= balance) {
balance -= amount;
to.balance += amount;
success = true;
} else {
success = false;
}
System.out.println(success + " - from: " + owner.getName() + ", to: " + to.owner.getName()
+ ", amount: " + amount + ", balance: " + balance);
return success;
}
public boolean transfer(Person to, int amount) {
return transfer(to.getAccount(), amount);
}
public BankAccount(int balance) {
this.balance = balance;
if (balance < 0) {
this.balance = 0;
}
}
public BankAccount(Person owner) {
this.owner = owner;
balance = 0;
}
public BankAccount(int balance, Person owner) {
this.balance = balance;
if (balance < 0) {
this.balance = 0;
}
this.owner = owner;
}
}
Person 클래스
public class Person {
private String name;
private int age;
private int cashAmount;
private BankAccount account;
public void setAge(int age) {
if (age >= 0) {
this.age = age;
}
}
public int getAge() {
return age;
}
public void setName(String name) { this.name = name; }
public String getName() {return name; }
public void setCashAmount(int cashAmount) { this.cashAmount = cashAmount; }
public int getCashAmount() { return cashAmount; }
public void setAccount(BankAccount account) { this.account = account; }
public BankAccount getAccount() {
return account;
}
public boolean transfer(Person to, int amount) {
return account.transfer(to, amount);
}
public boolean transfer(BankAccount to, int amount) {
return account.transfer(to, amount);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
if (age < 0) {
this.age = 12;
}
cashAmount = 0;
}
public Person(String name, int age, int cashAmount) {
this.name = name;
this.age = age;
if (age < 0) {
this.age = 12;
}
this.cashAmount = cashAmount;
if (cashAmount < 0) {
this.cashAmount = 0;
}
}
}
Main 클래스
public class BankDrive {
public static void main(String[] args) {
Person p1 = new Person("다람이", 23);
p1.setCashAmount(30000);
Person p2 = new Person("말랑이", 21, 100000);
BankAccount a1 = new BankAccount(p1);
a1.setBalence(100000);
BankAccount a2 = new BankAccount(500000, p2);
System.out.println(a2.transfer(a1, 200000));
System.out.println(a1.transfer(p2, 150000));
System.out.println(p2.transfer(a1, 270000));
System.out.println(p1.transfer(p2, 130000));;
}
}
출처 | 코드잇 (자바 기초)
728x90
'💠문제 풀이 > Java 문제 풀이' 카테고리의 다른 글
07. 평균값 계산기 (0) | 2021.10.06 |
---|---|
06. 특가 할인 매장 (0) | 2021.10.05 |
04. 은행 계좌 만들기 (4) (0) | 2021.10.05 |
03. 은행 계좌 만들기 (3) (0) | 2021.10.05 |
02. 은행 계좌 만들기 (2) (0) | 2021.10.05 |