
Т.о. java-файл может содержать сколько угодно классов/интерфейсов с пакетной зоной видимости и только один public-класс или public-интерфейс, имя которого совпадает с именем этого файла.
// Содержимое файла InterfaceExample.java
package multipleJavaSource;
// имя интерфейса совпадает с именем файла
public interface InterfaceExample {
//some code
}
class A {
//some code
}
interface II {
//some code
}
class B implements InterfaceExample {
//some code
}
А в примере ниже есть и public-класс, и public-интерфейс, что приводит к ошибке компиляции:
// Содержимое файла InterfaceExampleFail.java
package multipleJavaSource;
public class InterfaceExampleFail {
//some code
}
public interface InterfaceExampleA { // ошибка компиляции
//some code
}
class InterfaceExampleB {
//some code
}
interface InterfaceExampleC {
//some code
}