최원종의 개발 블로그

접근 제어 지시자 (access modifier) 본문

Java/Java 객체지향

접근 제어 지시자 (access modifier)

chl6698 2026. 2. 25. 15:43

접근 제어 지시자 4가지

 

public : 어디서나 접근 가능
default : 같은 패키지 내에서만 접근 가능
private : 해당 클래스 파일 내부에서만 접근 가능
protected : 상속을 배운 후 이해하기

 

정보 은닉이란?

클래스 내부에서 사용할 변수나 메서드를  private으로 선언해서 외부에서 접근하지 못하도록 하는 것


 

실습 코드

package ch09;

//객체를 설계하는 도면이라고 생각
public class Bank {

    //** 접근 제어 지시자 (public, default, private)

    //public 누구나 접근 가능
    String name;

    //default (아무것도 쓰지 않음)
    int balance;

    //private
    private String accountNumber;
    
}
package ch09;

public class Account {

    //default =  같은 패키지 내에서만 접근 가능
    String name;
    //내 클래스 파일 내부에서만 접근 가능
    private int balance;

    //나의 멤버 변수 balance의 값만 리턴하는 기능
    public int getBalance() {
        return balance;
    }

    //입금하다
    public void deposit(int money) {
        balance += money;

    }

    //출금하다
    public void withDraw(int money) {
        balance -= money;
    }

    //현재 잔액 출력 기능
    public void showInfo() {
        System.out.println("현재 잔액 : " + balance + " 원 ");
    }

}

 

 

접근 제어 지시자 문법을 사용해야 하는 이유

package ch09;

public class AccountMainTest {
    public static void main(String[] args) {

        Account account1 = new Account();
        account1.deposit(10_000);
        account1.withDraw(6_000);
        account1.showInfo();

        //접근 제어 지시자 문법, 왜 사용하는가?
        //신입 개발자가 실수로 코드를 잘못 작성하는 경우
        //우리는 객체의 행위인 입금하는 기능을 만들어 두었는데
        //실수로 바로 멤버 변수에 접근해서 값을 수정 한다면...

        //account1.balance = 10_000; < -- private 때문에 접근 불가
        account1.showInfo();
        //실수할 가능성이 있다.
        //balance 멤버 변수에 외부에서는 안보이게 접근을 차단해보자.
        //private

        //만약 사용하는 측에서 현재 잔액의 값만 리턴받고 싶다면?
        int currentMoney = account1.getBalance();
        System.out.println("currentMoney : " + currentMoney);


    }//end of main

}//end of class

결과출력화면

 

'Java > Java 객체지향' 카테고리의 다른 글

get, set 메서드  (0) 2026.02.26
this 예약어 사용 방법 3가지  (0) 2026.02.25
객체지향 프로그래밍(객체간 상호작용)  (1) 2026.02.25
생성자  (0) 2026.02.24
메서드  (0) 2026.02.24