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