Открытый интерфейс Java и открытый класс в том же файле

В одном файле .Java можно ли иметь открытый интерфейс и открытый класс (который реализует интерфейс).

Я новичок в Java-кодировании, и в большинстве мест в сети написано, что .java файл не может содержать более 2 открытых классов. Я хочу знать, верно ли это для интерфейса и класса.

Ответы

Ответ 1

Нет, это невозможно. В файле .java может быть не более одного общедоступного типа верхнего уровня. JLS 7.6. В объявлениях верхнего уровня типов указано следующее:

[& hellip;] должно быть не более одного [общедоступного уровня] для единицы компиляции.

Однако вы можете иметь класс, защищенный пакетом, в том же файле. Это компилируется отлично (если вы поместите его в файл с именем Test.java:

public interface Test {
    // ...
}

class TestClass implements Test {
    // ...
}

Ответ 2

Вы можете иметь столько публичных классов, сколько хотите, в одном файле, если вы используете вложенные классы. В вашем примере:

public interface I {
    public class C implements I {
        ...
    }

    public class D implements I {
        ...
    }

    ...
}

Ответ 3

public interface A
{
    public void helloWorld();

    public static class B implements A{

        @Override
        public void helloWorld() {
            System.out.print("Hello World");

        }

    }
}

Ответ 4

Правило Java состоит в том, что в исходном файле может отображаться только один открытый класс или интерфейс, а имя должно соответствовать файлу (т.е. Test.java → тест открытого класса или тестовый интерфейс общего интерфейса, но не оба).

Ответ 5

Также необходимо понимать интерфейс, управляемый программированием в качестве следующего шага при понимании интерфейса. Это говорит о том, что является фактическим использованием интерфейса. Какую роль он играет в Java (или любом другом языке).