A.Java

package a;

public class  A extends B {}

 
B.Java

package b;

 abstract class B {}

 
위와 같은 Code는 아래와 같은 Compile Error가 발생합니다.

B cannot be resolved as a type


A 에서 extneds 하려는 B abstract class를 못찾는것인데,
이유인 즉은 class B 가 "no modifier"로 선언 되어 있어서 그런것이지죠.
앞에 "public" keyword를 추가해주면 error는 말끔히 사라집니다.

default 가 protected 같은 녀석이 되어 있어서, 그러려니 했었습니다만,
혹시나 해서 문서를 찾아 봤습니다.

java 에서 access control 은 아래의 4종류가 있습니다..

* public
* private
* protected
* no modifier


여기서 중요한게 no modifier가 따로 있다는 것입니다.
저는 default behavior가 protected라고 추측했었는데, 그게 아니었던것이지요.

C Language를 오래했던 제가, Java에 대해 공부가 부족했던 오해 인가 봅니다.
Scope등의 자세한 내용은 "http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html" 여기서 참조 하시기 바랍니다.

참고로, protected 는 class 에는 붙힐 수 없고, memeber variable에만 적용됩니다. ㅎ



 
 

+ Recent posts