2012-08-17 41 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中,你可以,只要是公共的(跨包可见)或受保护的(可见的子类)

相关问题