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);
	}
}
반응형