본문 바로가기
Computer & Program/Java

[Java]접근제한자

by TDRemon 2012. 3. 11.
반응형
안녕하세요. TDR입니다.

 저번의 제한자에 이어서 오늘은 접근제한자에 대해서 정리해 보겠습니다. 접근제한자에 대해서는 특별히 할 말도 없고하니 바로 보겠습니다.

+++ public +++
 : 어떤 때라도 상속과 이용이 가능합니다. 

  
 - public은... 그야말로 아무대서나 막 쓸 수 있습니다. 오브젝트 안밖 할꺼 없이 다 이용가능하고 패키지 안밖 할꺼 없이 다 쓸 수 있습니다. 물론 상속도 패키지 안밖 할꺼 없이 다 가능합니다. 그냥 여기저거에서 막 쓰고 싶을 때 public을 선언해 주면 되겠습니다.

+++ private +++
 : 오브젝트 안에서만 쓸 수 있습니다.  


 - 위에서도 설명 했지만 오브젝트 안에서"만" 쓸 수 있습니다. 그 말인즉, 일단 상속... 절대 안됩니다. 그게 패키지 안이든 밖이든 안됩니다. 이용 가능한 범위도 오직 오브젝트 안에서만 입니다. 같은 패키지 안에서도 쓸 수 없습니다.  같은 패키지 안에서도 안되는 마당에 다른 패키지에서는 당연히 쓸 수 없겠죠?

+++ protected +++
 :  다른 패키지에서의 이용을 허용하지 않는다는 것을 제외하고 public과 동일합니다.


 - 저만 그런건지도 모르겠지만 혹시 protected 쓸 때 protect라고 쓰지는 않나요? 왜 protected만 뒤에 "ed"가 붙는지 의문입니다... 뭐 그건 그렇다치고, protected는 일단 겉보기에는 public와 똑같습니다. 패키지 안에서만 말이죠. 그리고 아래서도 설명하겠지만 아무것도 붙이지 않는 경우와 상당히 햇갈리는 부분인데, 패키지 밖으로도 상속할 수 있습니다. 하지만 패키지 밖에서의 이용은 불가능하죠. 즉, 패키지 밖으로의 상속은 가능하지만 이용은 불가능합니다.

+++ 없음(제한자 없음) +++
 :  오직 패키지 전용입니다. 패키지 안에서만은 public과 동급?


 - 이게 protected와 상당히 햇갈리는데요... 위에서 말한것과 같이 패키지 안에서는 public과 동일하게 쓰입니다. 상속, 이용 다 가능하죠.(오브젝트 안에서의 말은 빼먹었지만 오브젝트란 어차피 패키지보다 작은 개념임으로 패지키 안에서 가능하다면 당연히 오브젝트 안에서도 가능하겠죠?) protected와의 차이라면 다른 패키로의 상속이 안된다는 겁니다. 물론 다른 패키지에서의 이용도 불가능합니다.



일단 이렇게 4가지의 제한자의 정리는 끝났습니다. 글을 마치기 전에 약간 애매한 녀석들 몇명을 비교해서 정리보자면...

+++ public vs protected +++
 : 다른 패키지에서 이용이 가능하냐 안하냐를 제외하고는 동일.

+++ protected vs 없음 +++
 : 다른 패키지로의 상속이 가능하냐 안하냐를 제외하고는 동일.

+++ 없음 vs public +++
 : 다른 패키지에서의 이용 및 상속이 가능하냐 안하냐를 제외하고는 동일. 


어떻게 좀 정리가 되셨는지요? 사실 정리하면서 제가 새삼 정리가 됐습니다. ㅎㅎ
그럼 이번 정리는 여기서 마치겠습니다.

# 참고문헌 ANK Co. Ltd저, "Java가 보이는 그림책"
반응형

'Computer & Program > Java' 카테고리의 다른 글

[Java]Garbage Collection  (0) 2014.10.29
[Java]Call by value / reference  (0) 2014.10.28
[Java]추상 클래스 & 인터페이스  (0) 2012.03.11
[Java]제한자  (0) 2012.03.04
[Java]연산자 우선순위  (0) 2012.03.04

댓글