2017-04-15 1 views

Répondre

2

Oui vous interfaces droite ne peut pas avoir les constructeurs mais ce que vous avez décrit est la classe anonyme. Dans cette ligne, vous créez un objet de nouvelle classe sans nom qui étend LocationListener (et l'implémentation entre crochets). Si vous voulez en savoir plus sur les classes anonymes regardez ici: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

+0

merci pour la réponse, mais pourquoi cela nécessite un constructeur (LocationListener())? –

1

Ceci est une approche de classe anonyme. Pour être clair, voici un exemple. Pour créer un objet d'instance Animal, vous devez d'abord implémenter l'interface Animal.

class Lion implements Animal { 
    public void cry() { 
     System.out.println("Roar"); 
    } 
} 

Ensuite, créez un objet en utilisant l'approche habituelle:

Animal theLion = new Lion(); 

Une autre façon est de créer un objet animal en utilisant la classe Anonyme.

Animal theTiger = new Animal() { 
    public void cry() { 
     System.out.println("Grrr"); 
    } 
} 

Maintenant, les deux objets devraient être en mesure d'appeler la méthode cry comme:

theLion.cry(); 
theTiger.cry(); 

Cheers!

+0

merci pour la réponse, mais pourquoi nécessite-t-il un constructeur (Animal()) s'il n'y a pas un constructeur défini dans l'interface? –

+0

car la classe Anonyme est un raccourci pour déclarer une classe comme la classe Lion. – user1506104