【问题标题】:Is it possible to compile a file have more then one classes without main method?是否可以编译一个有多个类而没有 main 方法的文件?
【发布时间】:2017-01-17 22:25:46
【问题描述】:

在 java 中,我们创建一个 java 文件,它应该与下面的类名匹配。 但是,如果我想在一个文件中包含多个类,而在其他 java 文件中包含 main 方法的其他类。 我将如何编译第一个文件,以便具有 main 方法的类可以使用该代码。

//File 1 A.java
package pack1;
public class A
{
 //code of A
}
public class B
{
 //code of B
}
//end of file A.java

 //File 2 C.java

import pack1.*;
class C extends A
{
  public static void main (String arg[])
 {
  A obj = new A();
 }
}

如果我对这种假设的代码情况的假设有误,请纠正我。

【问题讨论】:

  • @ppasler 我非常了解嵌套类和抽象类,但请阅读我的代码示例,如果我只想将两个不同的类放在一个文件中,而其中没有一个类具有 main 方法,那么如何我编译我的代码?
  • @Prashant Kumar,从 B 类中删除 public 修饰符,因为我没有看到你的 C 类扩展它。

标签: java packages


【解决方案1】:

是的,你可以编译一个 java 文件,只要它只有 1 个 public 类/枚举/接口。

文件名应与公共类/枚举/接口的名称相同。

在第一个文件中有两个公共类,这是错误的。

【讨论】:

  • 感谢您的回答,您是对的,但不幸的是我无法为您的回答投票。
【解决方案2】:

我明白你想要什么。是不可能的。您不能在一个文件中声明两个公共类,但可以将 cals 声明为类。像这样:

//File 1 A.java
package pack1;
public class A
{
//Code of A
    public class B
    {
     //Code of B
    }
}
//end of file A.java

//File 2 C.java

import pack1.*;
class C extends A
{
    public static void main (String arg[])
    {
        A objA = new A();
        // If class C extends A
        B objB = new B();
        // else
        A.B objAB = new A.B();
    }
}

【讨论】:

  • 你说得对。如果我可以在一个文件中拥有一个公共类和另一个具有错误访问权限的公共类,是否有可能?
  • 对不起,我忘了写 public 到 B 类
  • @Parshant Kmar Is it possible if i could have one public class and other with difault access in a single file? 不,这是不可能的,因为在 java 中文件名和类名必须相等。
  • 谢谢,我明白了
【解决方案3】:

一个文件中只能有一个Public class/enum/interface,文件名必须与Public class/enum/interface相同。 它不会给你任何错误。

【讨论】:

    【解决方案4】:

    是的,有可能。

    通过Link 中的示例了解继承如何工作,尤其是“继承示例”

    只需确保文件名与您的类名完全相同,扩展名为 .java。例如,如果您的 Java 文件中的公共类称为“A”,那么您的文件名应该是“A.java”。

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多