[問題] access modifier的問題
最近在測試 Java 的 Access Modifier
(public, protected, private, none)
在編譯的時候發生了一件詭異的事情
先附上程式碼:
==Array.java==
package simple;
class Array {
public Array() {
System.out.println( "simple.Array");
}
}
==List.java==
package simple;
public class List {
Array a = new Array();
public Array b = new Array();
public List(){
System.out.println( "com.bruceeckel.util.List");
}
}
==TestLib.java==
import simple.*;
public class TestLib {
public static void main(String[] args) {
// Array is not public accessible.
// Array a = new Array();
List l = new List();
// cannot access a since it’s in package scope
// System.out.println(l.a);
System.out.println(l.b);
}
}
假設目前的路徑是 d:\java\id9455\simple
Array.java 和 List.java 放在 d:\java\id9455\simple
TestLib.java 放在 d:\java\id9455
問題來了
在編譯的時候
如果在 d:\java\id9455\simple 下 javac *.java
可以正常編譯
但如果是:先編譯 Array.java,再編譯 List.java
卻會發生找不到 Array 這個 Class 的問題
根據我對 none 這個 access modifier 的認識
他應該要能夠讓在同一個 Package 裡其他的Class 存取
但錯誤訊息卻找不到這個Class
請問一下這是為什麼呢 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.169.97
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 5 篇):