【问题标题】:Why a class related to a different package can access an class of another package?为什么与不同包相关的类可以访问另一个包的类?
【发布时间】:2015-07-02 15:47:33
【问题描述】:

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 的对象?

【问题讨论】:

  • function 用于 JavaScript。您的 A.java 类甚至无法编译。
  • 请清楚地提及您的类的包结构和访问说明符(公共或默认),然后才能回答。

标签: java package


【解决方案1】:

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

【讨论】:

【解决方案2】:

B 将 import (or can use fully qualified name) 来自其他包的类 A 如果它必须使用它。导入使其他包中的类可以看到来自不同包的类。但这可以通过使用scoping 进一步调整。

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

【讨论】:

  • 我想知道 A 类如何对 B 可见?
  • 可能你没有使用包,两个类都定义在同一个包中。如果不是,那么您应该强制使用“导入”。否则代码将无法编译。
  • 这里的场景是 A.java 和 B.java 在同一个文件夹中。现在我还没有使用任何包,但是我可以在 B 类中创建 A 类的对象吗?
  • javapapers.com/core-java/access-modifiers-in-java-explain 了解访问级别在 java 中的工作原理。
【解决方案3】:

你应该知道java中的访问修饰符。如果您的课程是公开的,则只需导入即可在任何地方访问它。

请通过以下链接更好地理解

http://javapapers.com/core-java/access-modifiers-in-java-explain/

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-18
      • 2013-07-13
      • 2012-04-26
      • 2013-01-30
      • 2015-01-30
      • 1970-01-01
      • 2021-04-04
      • 2021-08-06
      相关资源
      最近更新 更多