[TIL] 자바 접근제어자 정리

신동하·2024년 4월 24일

Java

목록 보기
1/3
post-thumbnail

자바에서 접근제어자는 클래스와 클래스의 멤버들(필드, 메소드, 생성자)를 사용할 때, 접근을 할 수 있는 범위를 지정해주는 역할을 한다.

(코딩을 하면서 정말 수도 없이 써봤지만, 한번쯤 정리를 해서 개념을 확실히 잡는게 좋을것이라 생각이 들어서 이렇게 정리해봅니다..ㅎㅎ^^)

1.클래스의 접근 제어자.

1. public: 모든 클래스에서 선언된 클래스에 접근이 가능하다. (패키지에도 상관이 없음)

2. default(생략됨): 접근 제어자를 붙이지지 않는 (default)클래스를 의미한다. 해당 클래스는 같은 패키지에서만 접근이 가능하다.!!

public class Test { // public class

}

class Test {// default class


}

2.멤버필드의 접근 제어자.

1. public: 클래스에서의 public과 비슷하게 public이 붙은 필드는 패키지와 상관 없이 어떤 클래스에서도 접근이 가능하다.

package pk1;
public class Test{
	public int i; //public으로 선언이 되어 있음



}

package pk2; //다른 패키지에 선언이 됨
public class Test{
	
    public static void main(String[] args){
    	i=20; // public으로 선언이 되었기 때문에 접근이 가능함.
    
    }
}

2. private: 이름에서도 알 수 있듯이 먼가 보안이 강화된 느낌이 난다. private이 붙은 필드는 같은 클래스내에서만 접근이 가능하다. (private로 선언된 필드는 다른 클래스에서 접근을 할려면 Getter, Setter을 이용하여 접근을 해야한다.)

package pk1;
public class Test{
	private int i; //private으로 선언이 되어 있음

}

package pk1;
public class Test{
	
    public static void main(String[] args){
    	i=20; // Error--> i는 private으로 선언이 되어 있기에 같은 클래스가 아니면 접근이 불가능함
    
    }
}

3. protected: 같은 패키지안의 모든 클래스 또는, 다른 패키지의 자식 클래스에서 접근이 가능하다.

package pk1;
public class Test1{
	protected int i; //private으로 선언이 되어 있음

}

package pk1;
public class Test2{
	
    public static void main(String[] args){
    	i=20; // 같은 패키지 않이기 때문에 접근이 가능함
    
    }
}

OR
package pk1;
public class Test1{
	protected int i; //private으로 선언이 되어 있음

}

package pk2;
public class Test2 extends Test1{ //상속을 진행하였음
	
    public static void main(String[] args){
    	i=20; // 다른 패키지 이지만 Test1을 상속하였기에 접근이 가능함.
    
    }
}

4. default: 접근 제어자를 지정하지 않은 멤버 필드는 같은 패키지의 클래스에서 접근이 가능하다.

package pk1;
public class Test1{
	protected int i; //private으로 선언이 되어 있음

}

package pk1;
public class Test2{ //상속을 진행하였음
	
    public static void main(String[] args){
    	i=20; // 같은 패키지의 클래스에서 접근이 가능함!.
    
    }
}
profile
JAVA를 자바💥😊😀

0개의 댓글