Можем ли мы сделать объект интерфейса в java? Если нет, то почему код ниже компилируется и показывает правильный вывод? - PullRequest
0 голосов
/ 16 января 2020

Я узнал, что мы не создаем экземпляры интерфейсов, но этот код работает нормально.

Может кто-нибудь сказать мне, почему он работает?

public class Main {
    public static void main(String args[]) {
       System.out.println("Hello World!");
    }

    public interface lfrag{                        
       public void listen(String s);
    }

    lfrag lis;
}

Ответы [ 3 ]

2 голосов
/ 16 января 2020

В приведенном ниже фрагменте вы распечатываете только Hello world!:

public static void main(String args[]) {
    System.out.println("Hello World!");
}

Хотя у вас есть интерфейс lflag, вы не создаете экземпляр ничего, созданного внутри него , вы только объявляете lfrag lis, что не влияет на ваш код.

Если бы вы попытались объявить lfrag lis = new lfrag(), вы получили бы ошибку - вы не можете создать объект интерфейса. Вместо этого вы можете создать класс, а затем реализовать на нем интерфейс - это позволит вам переопределить методы этого класса в вашем интерфейсе.

0 голосов
/ 16 января 2020

Lfrag lis;

Здесь вы создаете ссылочную переменную типа Lfrag, которая разрешена. Переменные ссылки используются для доступа к объектам в памяти кучи (созданной new).

0 голосов
/ 16 января 2020

Вы не «делаете объект». Вы просто объявляете переменную без инициализации. Создание переменных типов интерфейса - это пример использования интерфейсов, поэтому убедитесь, что вы можете это сделать.

Определение переменной использует контракт, который вы создали при определении интерфейса.

...