Java 为什么与不同包相关的类可以访问另一个包的类?

Java 为什么与不同包相关的类可以访问另一个包的类?,java,package,Java,Package,A.java package a; class A { void f1() { System.out.println("hi"); } } B.java package a; class A { void f1() { System.out.println("hi"); } } 在与A.java相同的文件夹中,类文件在同一文件夹中生成 package b; class B { new A()

A.java

package a;
class A {

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

B.java

package a;
class A {

    void f1()
    {
        System.out.println("hi");
    }
}  
在与A.java相同的文件夹中,类文件在同一文件夹中生成

package b;
class B
{
    new A().f1();
}
我对包装概念不熟悉。我这里的问题是,即使它们不在同一个包中,B如何创建A的对象?

B将从其他包中创建类A,如果它必须使用它。导入使其他包中的类能够查看不同包中的类。但这可以通过使用进行进一步调整


如果两者都在同一文件夹中,并且没有明确使用任何包,则它们都位于默认的包中并且如果类在同一个包中,则在使用它们时无需显式导入它们。

您应该了解java中的访问修饰符。如果您的类是公共的,只需导入它,就可以在任何地方访问它

请浏览下面的链接,以便更好地理解


如果使用公共类声明,它将转到
公共访问级别
。公共类可以通过使用
import a.a由不同的包访问
或提供完整的类名
new a.a().f1()

Java中有一种称为import的东西,您可以将它导入到当前包中,并访问方法或成员,只要它们是公共的(在包中可见)或受保护的(对子类可见)

函数
用于JavaScript。您的A.java类甚至不会编译。请清楚地提及类的包结构和类的访问说明符(公共或默认),然后才能回答。我想知道B如何看到类A?可能您没有使用包,并且两个类都定义在同一个包中。如果没有,那么您应该强制使用“导入”。否则代码不会编译。这里的场景是A.java和B.java在同一个文件夹中。现在我还没有使用任何包,但我可以在B类中创建A类的对象。如何?阅读java中访问级别的工作原理。具有默认访问级别的类不能被该包之外的类访问,这将使默认和公共混淆