접근 제어자 : 외부로부터 속성과 기능을 숨기는 역할
- private → 모든 외부 호출을 막음
- default → 같은 패키지 안에서 호출은 허용, package-private 이라고도 함.
- protected → default와 마찬가지로 같은 패키지 내에서 호출은 허용 + 패키지가 달라도 상속 관계라면 호출 허용
- public → 모든 외부 호출 허용
private → default → protected → public 순으로 접근을 막는다.
접근 제어자 / 범위 | 다른 패키지(상속X) | 상속 관계 | 같은 패키지 | 같은 클래스 내의 멤버 |
private | x | x | x | o |
default | x | x | o | o |
protected | x | o | o | o |
public | o | o | o | o |
public class Test {
public int publicNumber = 1;
protected int protectedNumber = 2;
int defaultNumber = 3;
private int privateNumber = 4;
}
같은 패키지일 때
public class TestMain {
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.publicNumber);
System.out.println(test.protectedNumber);
System.out.println(test.defaultNumber);
// System.out.println(test.privateNumber); 접근X
}
}
다른 패키지일 때
public class TestMain {
public static void main(String[] args) {
Test2 test = new Test2();
System.out.println(test.publicNumber);
// System.out.println(test.protectedNumber); 접근X
// System.out.println(test.defaultNumber); 접근X
// System.out.println(test.privateNumber); 접근X
}
}
캡슐화 : 속성과 기능을 하나로 묶고 외부에 필요한 기능만 노출하며 나머지는 내부로 숨기는 것으로 외부에서 데이터의 직접적인 변경을 방지할 수 있다.
이러한 캡슐화를 접근 제어자를 통하여 가능하게 할 수 있음.
가급적이면 데이터는 모두 private, 기능은 외부에 꼭 필요한 기능만 노출
'JAVA' 카테고리의 다른 글
[자바] 상속, 추상클래스, 인터페이스 (0) | 2024.12.24 |
---|---|
[자바] 상수와 리터럴 (0) | 2024.12.24 |
[자바] static 변수와 메서드 (1) | 2024.12.24 |
[자바] 자바 동작 방식과 구조 (0) | 2024.12.24 |
[자바] 자바 기초 (0) | 2024.12.24 |