본문 바로가기
프로그래밍 언어/java

[java] 접근 제어자, 정보 은닉

by m2162003 2021. 2. 24.

접근 제어자

용어는 처음 들어봤어도 자바 코딩하다 보면 public을 한 번 쯤은 봤을 것이다.

이 public이 바로 접근제어자인데 변수, 메서드, 생성자에 대한 접근 권한을 지정하는 것이다.

 

총 4개의 접근제어자가 있으며 권한은 다음과 같다. 

https://all-record.tistory.com/53

private은 클래스 외부에서 접근 불가능하다.

 

정보 은닉

private을 사용하면 외부에서 클래스 내부의 정보에 접근을 막을 수 있다. 일종의 guard인 셈

클래스 내부 데이터를 잘못 접근,사용하는 오류를 방지하기 위함이다.

 

 

private 변수

private 변수는 디폴트 생성자로 생성이 불가능하다.

private 변수를 지정하는 방법은 크게 2가지가 있는데 1. 생성자를 따로 만들어주거나 2. setter를 사용하는 방법이다.

 

이 때 public 메서드를 사용하면 private 변수를 외부 접근이 가능하게 만들수 있다.

보통 이 메서드 이름을 getter/setter로 짓는다. 꼭 이 이름이 아니어도 상관없는데 관례랄까..

getter만 있고 setter가 없다면 그 변수는 read only가 되는 셈이다.

 

++이클립스에서는 getter와 setter를 자동 생성해주는 서비스가 있다.

변수를 우클릭 -> source -> generate getter/setter를 통해 자동으로 getrer/setter를 생성한다.

 

public class MyDate {
	
	private int day;
	private int month;

	public int getDay() {
		return day;
	}

	public int getMonth() {
		return month;
	}

	public void setDay(int day) {
		this.day = day;
	}
	
	public void setMonth(int month) {
		this.month = month;
	}
	
}
public static void main(String[] args){
	
		MyDate date = new MyDate();
        date.month = 2; //에러 발생
        date.setMonth(2);
        
        System.out.println(date.getMonth());

}

댓글