반응형
클래스와 메소드를 생성할 때 접근제어자를 지정할 수 있는데요.
이는 해당 객체에 접근할 수 있는 허용 범위를 나타내는 역할을 합니다.
일종의 권한 같은 기능으로 보안과 밀접하게 연관이 되어 있어
각별한 주의가 필요하기도 한 기능입니다.
접근제어자의 정의
- 역할 : 클래스 혹은 메소드에 접근할 수 있는 일종의 권한을 부여하는 형태
- 목적 : 권한 부쳐 및 통제하므로써 데이터를 위험으로부터 보호함(캡슐화)
접근제어자 종류
종류 | 기능 |
public | 접근 제한의 없고 모두 접근 가능 |
protected | 동일 패키지 OR 외부 패키지의 자식 클래스에서 접근이 가능함 |
default | 동일 패키지에서 접근 가능(접근제어자 지정하지 않으면 자동 설정됨) |
private | 동일 클래스 내에서만 접근할 수 있음. |
사용할 수 있는 종류는 위와 같으며
각각의 기능을 수행하게 됩니다.
예제 소스
사용할 소스의 프로젝트 구조는 위와 같습니다.
public class running {
private String player_1 = "";
public String getPlayer_1() {
return player_1;
}
public void setPlayer_1(String player_1) {
this.player_1 = player_1;
}
public void print_status(String player, int grade) {
System.out.println(player+"은 현재 "+grade+ "등 입니다.");
}
}
public class track {
public static void main(String[] args) throws IOException {
running rn = new running();
}
}
각 클래스는 위와 같이 구성되어 있으며
running 클래스 내의 변수 부분을 바꾸면서 테스트해보겠습니다.
public
해당 제어자는 모든 접근 허용이므로 따로 테스트하지는 않겠습니다.
protected
running클래스에 포함된 getPlayer_1 메서드를
protected로 바꾸어 보겠습니다.
동일 패키지 OR 외부 패키지의 자식 클래스에 해당하는 조건이 맞지 않아
위와 같이 에러가 발생하는 모습입니다.
위와 같이 같은 클래스 내에 구현되면
조건이 충족하기 때문에 에러가 발생하지 않습니다.
default
default 또한 조건이 충족하지 않기에 에러가 나는 모습입니다.
private
private 또한 에러가 나는 모습인데요.
특이한 점은 위의 protected, default와 다르게 같은 클래스 내에서도
에러가 발생하는 모습입니다.
이뉴는 같은 클래스 내에 위치해야 하는 조건이 맞지 않기 때문입니다.
가장 강력한 private를 사용하기 위해서는 같은 클래스에 위치시키면 정상적으로 사용할 수 있습니다.
반응형
'Dev > Java' 카테고리의 다른 글
[Java] 상속 사용법과 예제 구현 소스 (0) | 2022.11.14 |
---|---|
[Java] 지그재그 수열 출력 알고리즘 예제 (1) | 2022.11.07 |
[Java] 클래스와 메소드 생성, 호출 사용법 (0) | 2022.11.04 |
[Java] 로또 번호 생성 프로그램(정렬, 랜덤 기능) (0) | 2022.11.02 |
[Java] Arraylist 데이터 정렬 방법과 메소드 (0) | 2022.11.01 |