Example
[E-Java] 접근 제어자 예시
송기동
2023. 8. 1. 18:00
728x90
Bank 클래스
package ch06;
public class Bank {
// 정보 은닉
// 접근 제어 지시자 private - 자기 자신에서만 사용 가능
private String name; // 계좌 번호
private int balance; // 계좌 잔액
// 입금
public void deposit(int money) {
this.balance += money;
System.out.println(money + " 원이 입금되었습니다.");
System.out.println("잔액은 " + balance + " 원 입니다.");
}
// 출금 - 도전 (잔액이 0원인데 출금 요청)
public int withdraw(int money) {
// 메서드 영역 안에 사용하는 변수는 지역 변수라고도 한다.
System.out.println(money + " 원을 출금합니다.");
int result = 0;
if (this.balance < money) { // 잔액 금액보다 요청 금액이 크다
System.out.println("잔액이 부족합니다");
result = 0;
} else {
this.balance -= money;
result = money;
}
return result;
}
// 잔액 확인
public void showInfo() {
System.out.println("현재 계좌 잔액은" + balance + " 입니다");
}
} // end of class
결과값
package ch06;
public class BankMainTest {
// 메인 함수
public static void main(String[] args) {
Bank bank = new Bank();
// System.out.println(bank.balance);
// bank.showInfo();
// System.out.println(bank.showInfo()); <-- 오류 발생
bank.deposit(10_000);
bank.withdraw(15_000);
bank.withdraw(5_000);
bank.showInfo();
// 신입이 실수를 한 코드
// bank.balance = 100_000; <-- private 추가
bank.deposit(100_000);
} // end of main
} // end of class
10000 원이 입금되었습니다.
잔액은 10000 원 입니다.
15000 원을 출금합니다.
잔액이 부족합니다
5000 원을 출금합니다.
현재 계좌 잔액은5000 입니다
100000 원이 입금되었습니다.
잔액은 105000 원 입니다.
Hero 클래스
package ch06;
public class Hero {
private String name;
private int hp;
private int power;
private int level;
private double defense;
// 생성자
public Hero(String name) {
this.name = name;
}
// get, set 메서드는 무조건 설계 해주는 것이 아니라 필요하다면 사용하는 개념입니다.
// getter, get 메서드 (리턴타입 반드시 존재)
public int getPower() {
return power;
}
public String getName() {
return name;
}
public int getHp() {
return hp;
}
public int getLevel() {
return level;
}
public double getDefense() {
return defense;
}
// setter, set 메서드 (리턴타입 없음, 매개변수 필요)
public void setPower(int power) {
// 방어적 코드를 작성한다.
if (power <= 0) {
System.out.println("잘못 입력 하였습니다.");
} else {
this.power = power;
}
}
public void setName(String name) {
this.name = name;
}
public void setHp(int hp) {
if (hp <= 0) {
System.out.println("사망 하였습니다.");
} else {
this.hp = hp;
}
}
public void setLevel(int level) {
this.level = level;
}
public void setDefense(double defense) {
this.defense = defense;
}
// 기능
public void attack() {
System.out.println("공격을 합니다.");
}
public void beAttacked(int damage) {
this.hp -= damage;
}
} // end of class
결과값
package ch06;
public class HeroMainTest {
public static void main(String[] args) {
Hero hero1 = new Hero("홍길동");
hero1.setPower(-1);
int returnPower = hero1.getPower(); // 클래스 파일에 설정된 값이 나옴
System.out.println(returnPower);
} // end of main
} // end of class
잘못입력하였습니다.
0
package ch06;
public class HeroMainTest {
public static void main(String[] args) {
Hero hero1 = new Hero("홍길동");
hero1.setPower(100);
int returnPower = hero1.getPower(); // 클래스 파일에 설정된 값이 나옴
System.out.println(returnPower);
} // end of main
} // end of class
100
728x90