85 votes

Peut-on créer une instance d'une interface en Java ?

Est-il possible de créer une instance d'une interface en Java ?

Quelque part, j'ai lu qu'en utilisant la 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

C'est correct ici ?

95voto

Chad La Guardia Points 1889

Vous ne pouvez jamais instancier une interface dans Java. Vous pouvez cependant vous référer à un objet qui implémente une interface par le 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 était de créer une classe Anonyme qui implémente l'interface. Vous créez un objet anonyme, pas un objet de type interface Test.

6voto

Mooh Points 613

Normalement, vous pouvez créer une référence pour une interface. Mais vous ne pouvez pas créer d'instance pour l'interface.

4voto

Liviu T. Points 8894

Réponse courte...oui. Vous pouvez utiliser une classe anonyme lorsque vous initialisez une variable. Jetez un œil à cette question : Anonyme vs classes internes nommées ? - meilleures pratiques ?

3voto

Ketan G Points 314

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X