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에만 적용됩니다. ㅎ