Можем ли мы создать экземпляр интерфейса на 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