在Java编程语言中,一个源文件只能有一个public类,该类的名称必须和源文件的名称相同。因此,一个源文件是不允许有两个public类的。然而,一个源文件可以有多个非public类,这些非public类可以被其他类调用和使用,但它们不能被其他的源文件所使用。
因此,在一个源文件中只能有一个public类,但可以有多个非public类。因此,一个源文件是不允许有两个主类的。