접근제한자
접근제한자란 무엇인가 말 그대로 접근을 제한하는 아이들이다.
지금까지 우리는 라이브러리 클래스를 만들고 외부에서 객체를 만들어 사용했다 앞으로도 그렇꺼고
근대 마냥 좋다고 외부에서 쓰고읽을수 있게만 만들어야 할까>?
바뀌면 안되는 필드, 읽으면 안되는 메소드가 있진 않을까?
그것을 위해 접근 제한자를 사용한다.
접근제한자는 클래스, 클래스 멤버(필드, 생성자, 메소드)에 사용가능하다.
-다른 패키지에서 클래스를 호출하지 못하도록 한다. (클래스 제한)
-객체 생성을 불가능하게 한다. (생성자 제한)
-특정 필드.메소드를 숨김처리한다. (필드/메소드 제한)
접근제한이 강한 순서는
public -> protected -> default -> private
오른쪽으로 갈수록 제한범위가 강해진다.
public : 클래스, 필드.생성자,메소드 에 적용가능 범위 : 모든 곳에서 접근이 가능하다.
protected : 필드.생성자. 메소드 에 적용가능 범위 : 자식클래스(같은 패키지의), 클래스에서 접근이 가능
default : 클래스, 필드,생성자, 메소드 에 적용가능 범위 : 같은 패키지 내의 클래스에서 접근 가능
private : 필드, 생성자, 메소드 에 적용가능 범위 : 모든 외부 클래스에서 접근 불가
Getter / Setter
실제 프로젝트를 진행 할 때 필드는 private으로 보호한다. 하지만 필드의 값을 외부에서 읽고 쓸 수는 있어야하는데 이 때
필드의 값을 보호하면서 읽고 쓸 수 있도록 Getter/Setter를 사용한다.
간단히 말하면
- 읽기전용 필드가 있다면 (Getter)
Getter가 필드를 참조하고 외부에서 Getter를 참조하면 읽기전용으로 필드에 접근이 가능하다.
Ex)
public className{
private int speed;
public int getSpeed(){
return speed;
};
}
Getter의 이름은 get필드명(){} // is필드명 (){} 으로 하는 것이 보통이다.
is필드명은 필드의 타입이 boolean 일때 사용한다.
-외부에서 함부로 값을 넣지 못하도록 하고싶다 (Setter)
Setter의 가장 큰 목적인 유효성 검사를 이야기 하는것 만약 정수만 들어가야하는 필드에 실수를 넣는 것을 방지하기 위해 Setter를 사용해 제대로 된 값인지 검사하는것.
ex)
private int speed;
public void setSpeed(int speed){
this.speed = speed;
}
위와 같이 Setter는 항상 필드명 앞에 set을 붙여준다.
그리고 타입은 언제나 void 매개변수 타입을 필드와 동일하게 만든다.
'Java' 카테고리의 다른 글
메소드 재정의(Override)와 몇가지.. (0) | 2018.12.12 |
---|---|
상속이란? (0) | 2018.12.05 |
정적인 자식 Static (0) | 2018.11.21 |
메소드와 인스턴스멤버, this. (0) | 2018.11.19 |
자바 개발환경 구축 (0) | 2018.10.09 |