Est-il possible de créer une instance d'une interface en Java?
Quelque part, j'ai lu qu'en utilisant une classe anonyme interne, nous pouvons le faire comme indiqué ci-dessous:
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
Est-ce correct ici?
Oui, votre exemple est correct. Les classes anonymes peuvent implémenter des interfaces, et c'est la seule fois où je peux penser que vous verrez une classe implémenter une interface sans le mot-clé "implémente". Découvrez un autre exemple de code ici:
interface ProgrammerInterview {
public void read();
}
class Website {
ProgrammerInterview p = new ProgrammerInterview () {
public void read() {
System.out.println("interface ProgrammerInterview class implementer");
}
};
}
Cela fonctionne bien. A été pris de cette page:
http://www.programmerinterview.com/index.php/Java-questions/anonymous-class-interface/
Vous ne pouvez jamais instancier une interface en Java. Vous pouvez toutefois faire référence à un objet qui implémente une interface en fonction du type de l'interface. Par exemple,
public interface A
{
}
public class B implements A
{
}
public static void main(String[] args)
{
A test = new B();
//A test = new A(); // wont compile
}
Ce que vous avez fait ci-dessus a été de créer une classe anonyme qui implémente l'interface. Vous créez un objet anonyme, pas un objet de type interface Test
.
Normalement, vous pouvez créer une référence pour une interface. Mais vous ne pouvez pas créer une instance pour l'interface.
Réponse courte ... oui. Vous pouvez utiliser une classe anonyme lorsque vous initialisez une variable. Jetez un oeil à this
Non, à mon avis, vous pouvez créer une variable de référence d'une interface, mais vous ne pouvez pas créer une instance d'une interface comme une classe abstraite.
Oui c'est correct. vous pouvez le faire avec une classe interne.
Oui, nous le pouvons, "Les classes anonymes vous permettent de rendre votre code plus concis. Elles vous permettent de déclarer et d’instancier une classe en même temps. C’est comme des classes locales sauf qu’elles n’ont pas de nom" - > > Java Doc