JAVA

접근제어자_private

고민말고생각하는사람 2024. 1. 17. 20:47
public class Japangea {

    int inputMoney;

    Japangea(int inputMoney) {
        this.inputMoney = inputMoney;
    }

    public void sellProduct(int productPrice) {
        if (productPrice > inputMoney) {
            System.out.println("금액이 부족합니다.");
        } else {
            inputmoney -= productPrice;
            System.out.println("물품이 구매 되었습니다.");
        }
    }

 

이전 글에서 접근제어자 private 를 사용하여 외부에서의 접근을 차단했다.

그렇게 동작되는 것을 확인 했으니, 코드, 그림을 그려가며 이해도를 높여보자.

 

private 를 사용하지 않았을 때

외부에서 객체만 생성할 수 있다면, 멤버 변수에 직접적인 제어권을 쥘 수 있었다.

 

자판기에 돈도 안 넣고 넣었다고 구라?를 쳤더니

자판기가 " 예 행님. 믿습니다." 하고 돈을 받은 셈 쳐버리면?

ㄴ자판기 주인과 가족이 울고 병든다. 

 

private 를 사용 할 경우

 그림과 같아 진다. 

그림이 의미하는 바는 다음과 같다.

1. private 접근제어자를 통해 멤버 변수는 외부의 접근이 차단된다.

2. 멤버 변수에 접근하기 위해서는 해당 인스턴스의 메서드를 통해서만 가능해졌다.

ㄴ 외부에서 메서드에 접근이 가능한 이유 ? - 메서드의 접근 제어자를 public 으로 했기 때문이다.

public void sellProduct(int productPrice){}

이를 통해 외부의 거짓말와 조작을 막을 수 있게 됐다!!