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的對象?
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的對象?
。公共班級可以通過使用import a.A;
或提供完整的班級名稱new a.A().f1()
通過不同的包進行訪問。
具有默認訪問級別的類無法通過該包之外的類訪問,您將默認設置與public混淆http://docs.oracle.com/javase/tutorial/java/javaOO /accesscontrol.html – Exupery 2012-08-17 20:05:13
我的錯誤..糾正它。 – 2012-08-17 20:11:33
B將import (or can use fully qualified name)從其他包的A類,如果它必須使用它。導入使其他包中的類可以從不同的包中查看類。但是這可以通過使用scoping進一步查找。
如果兩者都位於相同的文件夾中並且未明確使用任何軟件包,則它們都位於默認軟件包中。 如果它們在同一個包中,則在使用它們時不需要顯式導入這些類。
你應該知道java中的訪問修飾符。如果您的課程是公開的,只需導入它即可訪問。
如果你使用公共類聲明它去public access level
請通過下面的鏈接,更好地理解
http://javapapers.com/core-java/access-modifiers-in-java-explain/
有一種叫做進口在Java中,你可以,只要是公共的(跨包可見)或受保護的(可見的子類)
'function'是導入的封裝和訪問方法或成員爲JavaScript。你的** A.java **類將不會編譯。 – 2012-08-17 18:56:15
真正的錯誤! – Aragorn 2012-08-17 18:59:06
請提及您的類的包結構和您的類的訪問說明符(公共或默認),然後纔可以回答。 – 2012-08-17 19:00:43