Re: [問題] access modifier的問題

看板java作者 (!H45)時間18年前 (2007/04/29 14:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《id9455 (Pony)》之銘言: : 最近在測試 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(); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這樣的寫法會有問題,最好不要在宣告 member field 的同時指定不是常數的初值 改成以下寫法應該不會有問題: package simple; public class List { Array a; public Array b; public List() { a = new Array(); b = new Array(); System.out.println( "com.bruceeckel.util.List"); } } 至於為何原來的程式碼會出問題,可能就得等其他人來回答了 : 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: 140.115.205.85
文章代碼(AID): #16D3p0lr (java)
討論串 (同標題文章)
文章代碼(AID): #16D3p0lr (java)