Warum muss eine Java-Datei denselben Namen wie ihre öffentliche Klasse haben? [Duplikat]

Mögliche Duplikate:
Warum sollte der Dateiname in Java dem Klassennamen entsprechen?

Ich habe eine Datei mit dem Namentemp.java. Ich habe den folgenden Code geschrieben. Warum funktioniert das?

<code>class demo //not public keyword and not same as filename
{
    public static void main(String []args)
    {
        System.out.println("this is Main method");
    }
}
</code>

Warum funktioniert das nicht?

<code>public class demo
{
    public static void main(String []args)
    {
        System.out.println("this is Main method");
    }
}
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage