반응형
public: 아무런 제약 없이 모든 접근이 허용된다.
protected: 같은 패키지의 객체와 상속 관계에 있는 객체까지만 접근이 허용된다.
default:  해당 패키지 내에서만 접근이 허용된다.
private: 해당 class 내에서만 접근이 허용된다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
public class AccessModifier {
    
    public static void main(String[] args) {
        
        Wallet myWallet = new Wallet(10000);
        
        myWallet.myMoney -= 2200;
        
        myWallet.checkMyMoney();
    }
}    
    
    class Wallet {
        int myMoney;
        
        public Wallet(int myMoney) {
            this.myMoney = myMoney;                    
        }
        
        public void pay(int payMoney) {
            this.myMoney -= (int)(payMoney *1.1);
        }
        
        public void  checkMyMoney() {
            System.out.println("남은 돈: " + this.myMoney);
        }
        
    }
 
 
 
 
cs

8라인을보면 pay메소드를 활용하지 않고 직접 myMoney에 접근해서 시스템에 의한 지불이 아닌 임의의 지불을 처리했다.
처리되는건 맞지만 시스템에 의한 지불처리가 아니기 때문에 myMoney의 정보를 신뢰할 수 없다. 

그렇기 때문에 pay메소드를 통해 처리되게 해야한다. 
Wallet의 멤버 변수 myMoney는 클래스 내부에서만 접근할 수 있어야한다. 그래서 접근 제어자로 'private'을 사용하여
해당 클래스 내에서만 접근할 수 있게 한다. 
생성자나 pay메소드, checkMyMoney메소드는 외부에서 접근할 수 있도록 public 으로 한다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
public class AccessModifier {
    
    public static void main(String[] args) {
        
        Wallet myWallet = new Wallet(10000);
        
        //myWallet.myMoney -= 2200;
        myWallet.pay(2200);
        
        myWallet.checkMyMoney();
    }
}    
    
    class Wallet {
        private int myMoney;
        
        public Wallet(int myMoney) {
            this.myMoney = myMoney;                    
        }
        
        public void pay(int payMoney) {
            this.myMoney -= (int)(payMoney *1.1);
        }
        
        public void  checkMyMoney() {
            System.out.println("남은 돈: " + this.myMoney);
        }        
    }
 
 
cs

 

남은 돈: 7580

                                                                          

+ Recent posts