위로
아래
접근 제한자
특징
- 객체지향 4대 개념(추상화, 캡슐화, 상속, 다형성) 중 캡슐화가 포함하고 있는 '은닉화' 개념과 관련있다.
- 하나의 .java 파일에는 하나의 public 클래스만 존재할 수 있다. 그리고 public 클래스의 이름이 .java 파일의 이름이 된다.
사용 가능 범위
- 클래스 : public, default
- 생성자 : public, protected, default, private
- 멤버변수 : public, protected, default, private
- 멤버 메소드 : public, protected, default, private
- 지역 변수 : 접근제한자 사용 불가
표
접근 지정자 | 접근 범위 | 동일 클래스 | 동일 패키지 | 다른 패키지의 자식 클래스 |
다른 패키지 |
public | 접근 제한 없음 | O | O | O | O |
protected | 동일 패키지와 상속받은 클래스 내부 |
O | O | O | |
default | 동일 패키지 내에서만 |
O | O | ||
private | 동일 클래스 내에서만 |
O |
예시
더보기
-----------------------sec 패키지 One.java 파일-------------------------
public class One {
private int secret = 1; // 전부 접근 불가
int roommate = 2; // default. 동일 패키지까지만 접근 가능
protected int child = 3; // 동일 패키지 접근 가능, 다른 패키지의 자식 패키지까지 접근 가능
public int anybody = 4; // 전부 접근 가능
}
---------------------sec 패키지 One1.java 파일-----------------------
public class One1 extends One{
void print() {
//System.out.println(srcret);
System.out.println(roommate);
System.out.println(child);
System.out.println(anybody);
}
}
---------------------sec 패키지 Two.java 파일-----------------------
public class Two {
void print() {
One o = new One();
//System.out.println(o.secret) // 같은 패키지에 잇어도 다른 객체의 private 멤버 접근 불가
System.out.println(o.roommate);
System.out.println(o.child);
System.out.println(o.anybody);
}
}
---------------------sec.other 패키지 One2.java 파일-----------------------
import sec.One;
public class One2 extends One{
void print() {
//System.out.println(secret); //private는 접근 불가
//System.out.println(roommate); // 자식 클래스라도 부모와 다른 패키지에 있으면 default에 접근 불가
System.out.println(child);
System.out.println(anybody);
}
}
---------------------sec.other 패키지 Three.java 파일-----------------------
import sec.One;
public class Three {
void print(){
One o = new One();
//System.out.println(o.secret); //private는 접근 불가
//System.out.println(o.roommate); // 자식 클래스라도 부모와 다른 패키지에 있으면 default에 접근 불가
//System.out.println(o.child); // 다른 패키지의 다른 클래스는 접근 불가
System.out.println(o.anybody);
}
}