В файле *java должен находиться единственный главный публичный класс, при этом его название обязано быть тем же что и у файла, в котором он расположен.
Классов, определённых как protected и private не существует. Но на package-protected class приведенное выше правило не действует. Поэтому, для класса у которого не приведены модификаторы доступа разрешено использовать любое название. В результате, в одном файле, вместе с public-классом, могут находиться другие классы с тем же именем, у которых не заданы параметры доступа.