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){}
이를 통해 외부의 거짓말와 조작을 막을 수 있게 됐다!!