반응형

[JAVA] 자바 접근 제어자


자바의 접근제어자는 4종류가 있다.

 

                                                         public : 제한 없음

                                                         protected : 패키지 내부  //  다른 패키지여도 상속(extends) 했다면 사용 가능

                                                         defalut : 패키지 내부

                                                         private : 클래스 내부

 

 

이 중 접근제어자로 protected가 헷갈리는 경우가 많아 정리하고자 한다.

 

protected는 같은 패키지 내부에서 사용 가능하다. 이점은 헷갈리지 않는다.

헷갈리게 하는 부분은 다른 패키지여도 상속했다면 사용가능하다는 의미에서 헷갈린다.

 

결론부터 말하자면 protected는 메서드, 멤버변수에 사용가능하고

다른 패키지에서 사용하려면 protected 메서드, 멤버변수를 가진 class가 public이어야 한다.

 


테스트 구조도

 

패키지 Classtest

  • (default) DefaultClass 
  • (public) PublicClass

 

패키지 Classtest2

  • MainCalss

 

 

다른 패키지에서 DefaultClass를 import할 수 없다.

default는 같은 패키지에서만 사용할 수 있기 때문이다.

 


이제 PublicClass를 이용해서 protected를 테스트해보자.

PublicClass의 내부는 다음과 같다.

public 변수 number1

protected 변수 number 2

 

 

다른 패키지인 MainClass에서 PublicClass를 import 후 사용을 해봤다.

protected인 number 2가 보이지 않는다.

protected는 상속해야 사용 가능하기 때문이다.

 

 

상속을 하고 나서야 number 2를 확인할 수 있다.

 

 


사용 가능한 접근제어자

 

Class : public, default

멤버, 메서드, 생성자 : public, protected, default, private

 

 

Class에서는 public default 밖에 사용하지 못함에 주의하자.

 


 

반응형

+ Recent posts