JAVA
접근제한자
zkzk7290
2024. 9. 23. 10:23
반응형
접근 제어자(Modifier) : 클래스, 메서드, 변수의 접근 범위를 제어
1. 접근 제어자의 종류 : private, default, protected, public
>> 접근 제어자가 지정되지 않은 경우 default(기본값)으로 지정
+) 클래스 자체에 접근 제한자 사용 X
>> 중첩 클래스의 경우 사용 가능
2. 접근 제어자의 범위
public > protected > (default) > private
접근제어자
1.private: 같은 클래스 내에서만 접근가능
class PrivateClass {
private int myField;
private void myMethod() {}
}
//PrivateClass안에서만 접근 가능
2) default
: 같은 패키지 내라면 중복 X
: 패키지 외부에서는 접근 X
>> 패키지 내부에서는 중복 X, 접근 O
class DefaultClass {
// 같은 패키지 내의 다른 클래스들에 접근 가능
int myField;
void myMethod() {}
}
3) protected : 동일한 패키지 내의 모든 클래스와 다른 패키지의 하위 클래스에서 접근 가능
4)public: 어디서든 참조 가능한다
class ProtectedClass extends ParrentClass {//extendes 상속 받을떄 사용하는 클래스
protected int myField;
public ProtectedClass() {
// protected 속성과 메서드일 경우
// >> 상속받은 클래스에서 다른 패키지더라도 접근 가능
System.out.println(protectedField); // 안녕하세요
exampleMethod(); // 상속받은 클래스에서 호출 가능
}
}
Main
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 chapter06;
// 접근 범위 :제한 없음 \
public class Example {
// 클래스의 속성
// 어디서든 접근 가능
public int publicVar =1;
//같은 패키지O 다른패키지 - 해당 클래스의 상속받은 자식 클래스만 접근 가능
protected int protectedVar =2;
//동일한 패키지O 다른 캐지 X
int defaultVar =3;
// 같은 클래스내에서만 접근 가능
private int privateVar =4;
// 클래스 메서드
public void ex1() {
System.out.println(publicVar);
System.out.println(protectedVar);
System.out.println(defaultVar);
System.out.println(privateVar);
}
protected void ex2() {
System.out.println(protectedVar);
}
void ex3() {
System.out.println(defaultVar);
}
private void ex4() {
System.out.println(privateVar);
}
}
반응형