2012-08-17 43 views
-1

A.java爲什麼與不同包相關的類可以訪問另一個包的類?

package a; 
class A { 

    void f1() 
    { 
     System.out.println("hi"); 
    } 
} 

B.java

在相同的文件夾A.java和類文件的在同一文件夾中生成。

package b; 
class B 
{ 
    new A().f1(); 
} 

我是包裝概念的新手。我的問題是即使它們不在同一個包中,B如何創建A的對象?

+1

'function'是導入的封裝和訪問方法或成員爲JavaScript。你的** A.java **類將不會編譯。 – 2012-08-17 18:56:15

+0

真正的錯誤! – Aragorn 2012-08-17 18:59:06

+1

請提及您的類的包結構和您的類的訪問說明符(公共或默認),然後纔可以回答。 – 2012-08-17 19:00:43

回答

1

。公共班級可以通過使用import a.A;或提供完整的班級名稱new a.A().f1()通過不同的包進行訪問。

+1

具有默認訪問級別的類無法通過該包之外的類訪問,您將默認設置與public混淆http://docs.oracle.com/javase/tutorial/java/javaOO /accesscontrol.html – Exupery 2012-08-17 20:05:13

+0

我的錯誤..糾正它。 – 2012-08-17 20:11:33

0

B將import (or can use fully qualified name)從其他包的A類,如果它必須使用它。導入使其他包中的類可以從不同的包中查看類。但是這可以通過使用scoping進一步查找。

如果兩者都位於相同的文件夾中並且未明確使用任何軟件包,則它們都位於默認軟件包中。 如果它們在同一個包中,則在使用它們時不需要顯式導入這些類。

+0

我想知道A級對B可見度如何? – Aragorn 2012-08-17 18:58:23

+0

也許你沒有使用包,並且這兩個類都在同一個包中定義。如果不是,那麼你應該強制使用「進口」。該代碼不會另外編譯。 – 2012-08-17 19:00:32

+0

這裏的場景是A.java和B.java在同一個文件夾中。現在我還沒有使用任何軟件包,但是我可以在B類中創建A類對象嗎? – Aragorn 2012-08-17 19:08:07

-1

有一種叫做進口在Java中,你可以,只要是公共的(跨包可見)或受保護的(可見的子類)

相關問題