当前位置: 首页 > 面试题库 >

为什么包含main方法的类在Java中不需要公开?

穆子琪
2023-03-14
问题内容

我写了下面的代码

  class Hello //Note the class is not public
  {
        public static void main(String args[]) {

        System.out.println("Hello");
        }
  }

因此,当我运行它时,它可以正常运行并打印输出“ Hello”。

但是,如果JVM规范要求该main方法应该是公开的,因为“否则它就看不到main”,那么它也不适用于该类吗?如果JVM在未声明为public时“看不到”
Hello.main(),它将如何看到类A本身。

除了“因为规范这样说”以外,对此还有什么解释吗?

并且,如果JVM能够看到所有类和方法,因为它本身就是“安全性/可见性强制实施者”,那么为什么要将该main方法声明为public。


问题答案:

只是为了踢球,私人课程也可以举行一个演示main

class Outer {
    private static class Inner {
        public static void main(String[] args) {
            System.out.println("Hello from Inner!");
        }
    }
}

从命令行编译并正常运行:

C:\ junk> javac Outer.java
C:\ junk> java Outer $ Inner
您好!

C:\垃圾>



 类似资料:
  • 问题内容: 我宣布了以下课程 当我编译并运行它时,它运行良好并打印输出“ done”。即使我声明它在“ package a”中,也具有相同的行为; 但是,如果JVM规范要求该main方法应该是公开的,因为“否则它就看不到main”,那么它也不适用于该类吗?如果JVM在未声明为public时“看不到” A.main(),它将如何看到A类本身。 除了“因为规范这样说”以外,对此还有什么解释吗? 问题答

  • 问题内容: 为什么Java中的main方法总是需要参数?为什么我们每次都要写,而不是在使用任何参数时才写? 这样的方法会生成编译器错误。由于我们从不对main方法使用任何参数,因此应允许这样做。 这不是面试问题。编程时才想到。 问题答案: 基本上,有四个答案: 因为那是它的设计方式。是的,我知道这是一个循环的原因。但是关键是这就是它的样子,并且不会改变。因此,除非您打算设计自己的语言,否则这个问题

  • 为什么Java中的main方法总是需要参数?为什么我们每次都要编写,而不是在使用任何参数时编写它? 像这样的方法会生成编译器错误。由于我们从不对main方法使用任何参数,因此应该允许这样做。 这不是面试问题。编程的时候突然想到的。

  • 问题内容: 当我只是尝试使用 Java 编写一些程序时,我尝试使用变量,我知道变量必须在声明时进行初始化,但是在main方法内部它接受了没有初始化的变量。我不知道是什么原因。任何人都可以告诉我原因。 谢谢 码: 问题答案: 对于 实例变量水平 最终变量只能初始化一次。 必须 在构造函数结束之前 初始化类级别的最终变量。 对于 本地(方法)级别 方法级别的最终变量只能初始化一次。 使用前* 必须先初

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如

  • 问题内容: 在Python中的类上定义方法时,它看起来像这样: 但是在某些其他语言(例如C#)中,你可以使用“ this”关键字来引用该方法所绑定的对象,而无需在方法原型中将其声明为参数。 这是Python中的一种故意的语言设计决策,还是有一些实现细节需要传递“ self”作为参数? 问题答案: 我喜欢引用Peters的。“显式比隐式好。” 在Java和.可以推断出’ ‘,除非你拥有无法推断的变量