티스토리 뷰

Goal 

 - 접근 제어자의 정의에 대해 알아본다

 - 정보은닉에 대해 알아보고, 코드 예제를 살펴본다.

1. 접근 제어자 (access modifier)

 - 변수, 메서드, 생성자에 대한 접근 권한 지정

 - public, private, protected, 아무것도 안 쓰는 경우(기본 접근 제어자)

 - private를 사용하면 클래스 외부에서는 접근 할 수 없음.

 

 

2. 정보은닉

 - 접근 제어자를 적절하게 사용하여, 데이터의 접근 권한을 설정하여 정보를 은닉하는 방법.

 - 주로 private 접근 제어자와 get, set 메서드를 활용하여, ID나 패스워드 등의 중요한 정보의 접근을 제어한다.

 - get, set 메서드를 통해 정보를 관리하면, 정보를 입력하거나 출력할 때, 불필요한 정보들을 조건문을 통해 걸러낼 수 있다.

3. 정보은닉 예제

 

3-1 MyData.java

 - day, month, year를 private로 선언하여, 데이터 수정을 제어한다.

 - 데이터를 수정하거나 사용하고 싶을 경우, get, set 메서드를 사용하여 관리한다.

 - get 메서드를 통해 불필요한 데이터가 오는 것을 제어할 수 있다. (1월부터 12월에 포함하지 않는 숫자)

public class MyDate {
    
    private int day;
    private int month;
    private int year;
    
    private boolean isValid = true;
    
    public void setDay(int day) {
        this.day =day;
    }
    
    public int getDay() {
        return day;
    }
    
    public int getMonth() {
        return month;
    }

    public void setMonth(int month) { 
        
        //조건문을 통해 불필요한 데이터가 오는 것을 방지할 수 있다
        if (month < 1 || month > 12) {
            isValid = false;
        }
        else {
            this.month = month;
        }

    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public void showDate() {
        
        if (isValid == false) {
            System.out.println("유효하지 않은 날짜 입니다.");
        }
        else {
            System.out.println( year + "년 " + month + "월 " + day + "일 ");
        }

    }

}

3-2 MyDateTest.java 

 - set메서드를 통해 데이터에 값을 넣고 date를 출력한다.

package hiding;

public class MyDateTest {

    public static void main(String[] args) {
        
        MyDate date = new MyDate();
        
        date.setDay(14);
        date.setMonth(10);
        date.setYear(2020);
        
        date.showDate();
        
        

    }

}

'Java > Java 올인원 패키지' 카테고리의 다른 글

7. 객체 간 협력  (0) 2020.03.14
6. This (Java)  (0) 2020.03.14
4. 참조 자료형 (reference data type)  (0) 2020.03.14
3. 생성자 (Java)  (0) 2020.03.14
2. 함수와 메서드  (0) 2020.03.13
댓글