Modifier (접근 제어자)
- 클래스, 메서드, 변수의 접근 범위를 제어
1. 접근 제어자의 종류
- private, default, protected, public
- 접근 제어자가 지정되지 않은 경우 default(기본값)으로 지정
2. 접근 제어자의 범위
public > protected > ( default ) > private
1) private
- 같은 클래스 내에서만 접근 가능
2) default
- 같은 패키지 내라면 중복 X
- 패키지 외부에서 접근 X, 패키지 내부에서 접근 O
3) protected
- 동일한 패키지 내의 모든 클래스와 다른 패키지의 하위 클래스에서 접근 가능
4) public
- 어떤 클래스든 어떤 패키지 내에 있든 접근 가능
(예제 코드)
더보기
더보기
import otherPackage.ParentClass;
1) private
class PrivateClass{
private int myField;
private void myMethod() {
}
}
2) default
class DefaultClass{
// 같은 패키지 내의 다른 클래스들에 접근 가능
int myField;
void myMethod() {
}
}
3) protected
class ProtectedClass extends ParentClass{
protected int myField;
public ProtectedClass() {
// protected 속성과 메서드일 경우
// >> 상속받은 클래스에서 다른 패키지더라도 접근 가능
System.out.println(protectedField);
exampleMethod(); // 상속받은 클래스에서 호출 가능
}
}
4) public
public class A_Modifier {
static String name = "홍동현";
public static void main(String[] args) {
PrivateClass pc = new PrivateClass();
// pc.myField;
// >> private 설정 된 속성과 메서드는 해당 클래스 내부에서만 읽을 수 있음
DefaultClass dc = new DefaultClass();
dc.myField = 10;
dc.myMethod();
ProtectedClass pc2 = new ProtectedClass();
}
}
package otherPackage;
public class ParentClass {
public String publicField;
protected String protectedField;
// == default ==
public ParentClass() {
this.protectedField = "안녕하세요";
}
protected void exampleMethod() {
System.out.println("상속받은 클래스에서 호출 가능");
}
}
package chapter07;
import chapter07.A_Modifier;
//class DefaultClass{
//
//}
public class B_Modifier {
public static void main(String[] args) {
System.out.println(A_Modifier.name); // 홍동현
}
}
'Java' 카테고리의 다른 글
[Java] final (0) | 2024.09.09 |
---|---|
[Java] Encapsulation (0) | 2024.09.09 |
[Java] Overriding (0) | 2024.09.09 |
[Java] Inheritance (0) | 2024.09.09 |
[Java] Constructor (0) | 2024.09.06 |