美文网首页
一个Java文件中可以定义多个Class么?

一个Java文件中可以定义多个Class么?

作者: WowBoard | 来源:发表于2020-09-10 09:37 被阅读0次

    一个Java文件可以定义多个Class么 ?

    答案肯定是可以的。

    下面我们测试一下:

    //Test.java
    class A {}
    
    class B {}
    
    class C {}
    
    class D {}
    

    创建一个Test.java文件, 在这个文件中定义了4个类 分别是A,B,C,D。
    然后在编译一下这个Test.java文件,看会发生什么?

    [boardMacBook-Pro ~]$ javac Text.java
    [boardMacBook-Pro ~]$
    

    编译并没有报错,

    [boardMacBook-Pro ~]$ ls
    A.class    B.class    C.class    D.class Test.java
    

    可以看到Test.java 将被编译成4个class文件

    但是事情并未结束~
    我们给Test.java 其中一个类加上一个public试试?

    //Test.java
    public class A {}
    
    class B {}
    
    class C {}
    
    class D {}
    

    我们重新编译编译一下Test.java文件

    [boardMacBook-Pro ~]$ rm -rf *.class 
    [boardMacBook-Pro ~]$ javac Text.java
    Test.java:4: 错误: 类 A 是公共的, 应在名为 A.java 的文件中声明
    public class A {
           ^
    1 个错误
    

    可以看到编译出错了, 并没有通过编译, 其实这里如果你用IDE工具的话,在编辑器内就会标注红色提示错误了!

    错误的提示是,类 A 是公共的, 应在名为 A.java 的文件中声明 也就是说在java中,使用public声明的类 类名必须和文件名一致

    那接下来我们将public class A 换成 public class Test 试试?

    //Test.java
    public class Test {}
    
    class B {}
    
    class C {}
    
    class D {}
    
    [boardMacBook-Pro ~]$ javac Text.java
    [boardMacBook-Pro ~]$ ls
    Test.java:4: 错误: 类 A 是公共的, 应在名为 A.java 的文件中声明
    B.class    C.class    D.class   Test.class Test.java
    

    编译可以通过了,并声称了对应的class文件

    那我们在试试,将其他的class 也声明成public呢?

    //Test.java
    public class Test {}
    
    public class B {}
    
    public class C {}
    
    public class D {}
    
    [boardMacBook-Pro ~]$ rm -rf *.class
    [boardMacBook-Pro ~]$ javac Test.java
    Test.java:6: 错误: 类 B 是公共的, 应在名为 B.java 的文件中声明
    public class B {}
           ^
    Test.java:8: 错误: 类 C 是公共的, 应在名为 C.java 的文件中声明
    public class C {}
           ^
    Test.java:10: 错误: 类 D 是公共的, 应在名为 D.java 的文件中声明
    public class D {}
           ^
    3 个错误
    

    编译报错了,根据错误提示,我们可以理解成只要是public声明的class 必须与java源文件名称相同!

    通过以上测试我们可以得出以下结论:
    1,单独的java文件中可以声明多个class文件
    2,public的类不是必须的
    3,在Java源文件中每定义一个class在编译的时候就会生成一个对应的class文件
    4,在java源文件中只能有一个使用public声明的class 并且必须与文件名相同,

    相关文章

      网友评论

          本文标题:一个Java文件中可以定义多个Class么?

          本文链接:https://www.haomeiwen.com/subject/sldyektx.html