Java

접근 제어 지시자

H_u 2024. 4. 17. 11:48
728x90
반응형
SMALL

💡학습 목표 💡

  • 접근 제어 지시자란?
  • 접근 제어 지시자에 종류를 알아 보자.

접근 제어자 - 정보 은닉, 캡슐화

  • 객체의 각각의 상태값은 직접 변수를 통해서 변경하는 것이 아닌 기능(행위, 메서드)을 통해서 변경하게 설계 해야 한다.

1. 접근 제어 지시자란?

클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드

 

2.접근 제어 지시자에 종류를 알아 보자.

public —> 어디에서든 접근 가능 함. default —> 같은 패키지 내에서 접근 가능 protected ← 상속 배운 이후 private —> 해당 .java 안에서만 접근이 가능하다.

 

시나리오 코드

package basic.ch10;

 

//은행

public class Bank {

// 아무것도 지정하지 않으면 default 제어 지시자이다.

 

public String name;

private int balance;

// private // private 는 클래스 안에서만 사용이 가능하다.

 

// 입금하다

public void deposit(int money) {

 

balance = balance + money;

showInfo();

}

 

// 출금하다

public int withdraw(int money) {

// 방어적 코드를 작성

if (balance < money) {

System.out.println("잘못된 요청입니다");

 

}

balance = balance - money;

showInfo();

return money;

}

 

// 총 잔액을 출력하다

public void showInfo() {

System.out.println("은행 이름은 : " + this.name + "입니다");

System.out.println("현재 잔액은 : " + this.balance + "입니다");

}

 

// 정보 은닉(private) 후에 getter, setter 메서드를 설계해 둘 수 있다.

// get 메서드란 단순히 객체의 상태 변수를 리턴하는 메서드 이다.

public int getBlance() {

return this.balance;

}

 

public String getName() {

return this.name;

}

 

// setter 멤버 변수에 접근해서 객체의 상태 값을 변경하게 하는 메서드(리턴 타입 없음)

public void setName(String inputName) {

this.name = inputName;

}

 

public void setBalance(int money) {

if(money < 0) {

System.out.println("잘못된 입력입니다.");

}

else {

this.balance = money;

}

}

}

package basic.ch10;

 

public class BankTest {

 

public static void main(String[] args) {

 

Bank bank1 = new Bank();

bank1.name = "우리은행";

bank1.deposit(10_000);

int getmoney = bank1.withdraw(5_000); // 리턴 타입이

System.out.println(">>>>>>출금>>>>>>>");

System.out.println("금액 : " + getmoney);

 

// 신입 개발자가 실수로 멤버 변수에 접근해서 수정을 한다면...?

// Bank 에 돈을 넣으려면 deposit() 기능으로 만들어져있다

// bank1.balance = 100_000; <--private 로 변경 후 정보 은닉 되었다.

// 이렇게 덮어쓰기가 된다면

// 의도하지 않은 실수를 발생 시킬 수 있다.

// Bank 폴더로 가서 int balance 에 private 태그(은닉태그) 를 사용해서

// 막을수 있다

bank1.deposit(100_000);

// 실행의 흐름을 만들 예정...

// 현재 은행에 전체 잔고가 200_000원 이하라면

// 본점에 금액 요청상황을 해야한다

System.out.println(bank1.getBlance());

int money = bank1.getBlance();

if (money <= 200_000) {

System.out.println("본점에 금액을 요청해 주세요");

}

bank1.setName("그린은행");

System.out.println(bank1.getName());

 

bank1.setBalance(1_000_000);

System.out.println(bank1.getBlance());

 

 

}// end of main

 

}// end of class

728x90
반응형
SMALL

'Java' 카테고리의 다른 글

ver 0.0.1 Starcraft  (0) 2024.04.19
this. 의 3가지 사용 방  (0) 2024.04.19
객체지향 패러다임이란  (0) 2024.04.16
생성자(constructor)  (0) 2024.04.16
RunTime Data Area  (0) 2024.04.15