본문 바로가기

Java

[Java] 정보 은닉

01. 접근 제어자(access modifier)

 

 

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

 

private private가 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능합니다.
default(기본 접근 제어자) 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 되어 해당 패키지 내에서만 접근이 가능합니다.
protected protected가 붙은 변수, 메소드는 동일 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근 가능합니다. 
public public이 붙은 변수, 메소드는 모든 곳에서 접근이 가능합니다.

※ 밑에 있을 수록 많은 접근을 허용합니다.

 

 

private 변수를 외부에서 접근하게 하려면 public 메서드로 접근합니다. (getData, setData)

 

package hiding;

public class MyDate {

	private int day;  // private access modifier
	private int month;
	private int year;
	
	public void setDay(int day) {
		this.day = day;
	}
    
	public int getDay() {
		return day;
	}
	
}

 

 

02. Eclipse에서 자동으로 get, set 메소드 생성

 

 

body에 오른쪽클릭해서 Source → Generate Getters and Setters를 클릭합니다.

 

 

get, set 메소드가 필요한 변수를 체크한 후 하단의 Generate 버튼을 클릭합니다.

 

 

 

03. 변수를 private으로 설정하는 이유

 

 

  • get과 set 메소드를 통해 데이터를 핸들링을 할 수 있기 때문에 오류를 막을 수 있습니다.
  • 직접 변수를 접근하는 것이 아니기 때문에 정보가 보호됩니다. 

 

package hiding;

public class MyDate {

	private int day;  // private access modifier
	private int month;
	private int year;
	private boolean isValid;
	
	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		
		if (month < 1 || month > 12) {
			isValid = false;
		} else {
			this.month = month;
		}
		
	}


	…


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

 

 

참고

패스트캠퍼스 : 객체지향 프로그래밍 강좌

https://wikidocs.net/232

'Java' 카테고리의 다른 글

[Java] static 변수, 메서드  (0) 2021.06.10
[Java] this에 대하여  (0) 2021.06.10
[Java] 자바 용어 정리  (0) 2021.06.08