gpt4 book ai didi

JAVA 为什么非公共(public)类应该是可执行的;不是在包装外使用吗?

转载 作者:行者123 更新时间:2023-12-02 12:42:31 24 4
gpt4 key购买 nike

在Java中,我可以从命令行运行/执行非公共(public)(即“默认”访问)java类,即使它位于包中。为什么这可能?我们不是因此在其包之外使用了不应该正确的默认类吗?

最佳答案

我认为您正在描述类似于以下内容的内容(有关 java 类上可用的可见性修饰符,请参阅 Is a class private or public by default in Java and C++?):

class PkgPrivateClass {

public void doIt() {
System.out.println("Hello World!");
}

public static void main(String[] args) {
PkgPrivateClass pkgPrivateClass = new PkgPrivateClass();
pkgPrivateClass.doIt();
}
}

这将编译并打印 Hello World!

现在回答问题什么是可访问的以及为什么:

  • 除了每个静态方法之外,main 方法不会也不能执行任何其他操作。
  • main 方法仅在同一包内可见(因为该类是包私有(private)的)。 启动 java 程序 - 即调用 main 方法 - 很难与 java 程序中的普通方法调用相比。

虽然包私有(private)类无论如何都不经常使用(请参阅 Pros and cons of package private classes in Java? ),但我看到两个论据,说明为什么允许从命令行调用包私有(private)类是有意义的:

  • 显式添加public static void main(String[] args) 方法。如果你不想调用这个类,就不要添加这个方法。

  • 启动 JVM 时,您通常会给出完全限定类名。有人可能会争辩说,这使得命令行调用从此包中执行 - 或者反过来问:主方法是从哪个包中调用的?

关于JAVA 为什么非公共(public)类应该是可执行的;不是在包装外使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44884811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com