JAVA/수업 복습

자바 공부기록 34 - 접근지정자(public, private, protected)

본이qq 2022. 4. 26. 13:00

●접근지정자 ; 클래스의 멤버들에 대한 접근을 제어하는 키워드

                       모든 클래스의 멤버는 직접적인 접근이 허용되는 것과 허용되면 안되는 정보가 있습니다.

 

//private : 클래스 내부에서만 사용가능한 멤버를 정의하는 키워드 (클래스 내부에서만 자유롭게 접근이 가능함)

//public : 접근에 제한이 없는 멤버를 정의하는 키워드

//protected: child class 에서만 자유롭게 접근이 가능

//default : 접근 지정자를 지정하지 않으면 자동으로 갖게되는 접근지정자이며, 같은 패키지내에서 자유롭게 접근 가능

                (같은 패키지 안에서는 public과 동일한 접근제한)

 

 

 

 

클래스 Acccount 의 멤버변수의 접근지정자로 private을 설정한 경우 예시 (은행 계좌 코드)

1
2
3
4
5
6
7
8
class Account {
    private double balance;
    
 
    public void init(double n) {
        balance = n;
    }
    
cs

- 위와 같이 클래스 내에 있는 멤버메소드를 이용하여 멤버변수의 값을 세팅한다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void withrow(double money) {
        Scanner sc = new Scanner(System.in);
        System.out.println("비밀번호 네자리를 입력하세요");
        int pass = Integer.parseInt( sc.nextLine() );
        
        if( pass != 1234 ) {
            System.out.println("비밀번호가 맞지 않습니다");
            return;
        }
        if( money > balance ) {
            System.out.println("잔액이 부족합니다.");
            return;   
        }
        balance -= money;
        System.out.println(money + "원 출금이 완료되었습니다");
        //System.out.printf("현재 잔액은 %.2f 원 입니다.\n\n", balance);
        display();
    }
    
cs

-출금 메소드 withrow 만들기 (비밀번호는 1234)

-같은 클래스 내에 있는 display() 메소드 호출 가능

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public double getBalance() {
        return balance;
    }
 
public void display() {
        // System.out.printf("현재 잔액은 %.2f 원 입니다.\n\n", balance);
        System.out.printf("현재 잔액은 %.2f 원 입니다.\n\n", getBalance() );
    }
 
public void deposit(double money) {
        if( money <= 0 ) {
            System.out.println("입금액 오류. 관리자에게 문의하세요");
            return;
        }
        balance += money;
        System.out.println(money + "원 입금이 완료되었습니다");
        //System.out.printf("현재 잔액은 %.2f 원 입니다.\n\n", balance);
        display();
    }
cs

-balance 잔액을 반환해주는 getBalance() 메소드를 만들고

 잔액을 보여주는 display 메소드에서 바로 getBalance()메소드 호출 가능

 마찬가지로 deposit 출금 메소드에서도 바로 display 메소드를 사용함으로써 출력 가능

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Class06 {
 
    public static void main(String[] args) {
        Account a = new Account();
        // a.balance = 100000; // private 멤버는 클래스 외부에서는 객체이름을 통해서도 접근이 금지
        a.init(100000.0);
        a.withrow(50000.0);
        a.deposit(200000.0);
        a.display();
        System.out.printf("현재 잔액은 %.2f 원 입니다.\n\n", a.getBalance() );
    }
 
}
 
cs

클래스 Account의 객체변수 a 생성

Account 클래스의 멤버변수인 balance의 접근지정자는 private이므로

클래스 외부인 메인 메소드에서 객체명.변수명으로 직접적인 접근이 금지