Можем ли мы создать экземпляр интерфейса на Java?

Можно ли создать экземпляр интерфейса в Java?

Где-то я читал, что используя внутренний анонимный класс, мы можем сделать это, как показано ниже:

interface Test  
{  
    public void wish();  
}  
class Main  
{  
    public static void main(String[] args)  
    {  
        Test t=new Test()  
        {  
            public void wish()  
            {  
                System.out.println("output: hello how r u");  
            }  
        };  
    t.wish();  
    }  
}    

cmd> javac Main.java  
cmd> java Main  
output: hello how r u  

Правильно ли это?

Ответ 1

Да, ваш пример верен. Анонимные классы могут реализовывать интерфейсы, и что единственный раз, когда я могу подумать, вы увидите класс, реализующий интерфейс без ключевого слова "реализует". Проверьте другой пример кода:

interface ProgrammerInterview  {
    public void read();
}

class Website  {
    ProgrammerInterview p = new ProgrammerInterview () {
        public void read() {
            System.out.println("interface ProgrammerInterview class implementer");
       }
     };
}

Это прекрасно работает. Был взят с этой страницы:

http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/

Ответ 2

Вы никогда не сможете создать интерфейс в java. Однако вы можете обратиться к объекту, который реализует интерфейс по типу интерфейса. Например,

public interface A
{
}
public class B implements A
{
}

public static void main(String[] args)
{
    A test = new B();
    //A test = new A(); // wont compile
}

То, что вы сделали выше, - это создать анонимный класс, который реализует интерфейс. Вы создаете анонимный объект, а не объект типа interface Test.

Ответ 3

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

Ответ 4

Короткий ответ... да. Вы можете использовать анонимный класс при инициализации переменной. Взгляните на this

Ответ 5

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

Ответ 6

Да, это правильно. вы можете сделать это с помощью внутреннего класса.

Ответ 7

Да, мы можем: "Анонимные классы позволяют сделать ваш код более кратким, они позволяют вам объявлять и создавать экземпляр класса одновременно. Они похожи на локальные классы, за исключением того, что у них нет имени" - → Java Doc