Java 为什么如果我的文件名和公共类名不同,那么我会得到编译错误?

Java 为什么如果我的文件名和公共类名不同,那么我会得到编译错误?,java,constructor,compiler-errors,access-specifier,Java,Constructor,Compiler Errors,Access Specifier,为什么如果我的文件名和公共类名不同,那么我会得到编译错误 因为Java就是这样定义的:如果有一个public类,它必须位于以public类命名的文件中 详情请参阅。它本质上是说,如果源代码存储在文件系统中,则会施加一组特定的要求,以使包系统以一致的方式工作。用户知道该规则。他在问背后的原因Java就是这样定义的不是答案。@sᴜʀᴇsʜᴀᴛᴛᴀ: 我看不出有任何证据。你说的对主课来说是正确的。但是,如果我使用名为pubilc的访问说明符更改其他子类中的类名,为什么会发生编译错误?@AkashPra


为什么如果我的文件名和公共类名不同,那么我会得到编译错误

因为Java就是这样定义的:如果有一个public类,它必须位于以public类命名的文件中


详情请参阅。它本质上是说,如果源代码存储在文件系统中,则会施加一组特定的要求,以使包系统以一致的方式工作。

用户知道该规则。他在问背后的原因<代码>Java就是这样定义的不是答案。@sᴜʀᴇsʜᴀᴛᴛᴀ: 我看不出有任何证据。你说的对主课来说是正确的。但是,如果我使用名为pubilc的访问说明符更改其他子类中的类名,为什么会发生编译错误?@AkashPrabhakar:对不起,我不知道“在主类中正确”是什么意思。@AkashPrabhakar:您已经开始了一个句子(“如果我忽略公共或删除公共”),但从未完成它。如果你那样做了,什么?你是说它是编译的?是的,因为正如我上面所说的,这个限制与公共类有关。大家好,欢迎来到StackOverflow。请花些时间阅读,特别是“我可以在这里问什么话题?”和“我应该避免问什么类型的问题”部分。更重要的是,请阅读。您可能还想了解。这是Java设计它的方式。看,这就是Java设计它的方式。请参阅下面的链接
public class constprac {

    public static void main(String args[]  )
    {
        consttest class1=new consttest("ria");
        class1.showName();
    }
}
**public** class consttest{
    String gname;
    public consttest(String name){``
        gname=name;
    }
    public String setName(){
        return gname;
    }
    public void showName(){
        System.out.println("YOUR 1ST GirlFriend IS "+ setName());
    }
}