2014-06-18 4 views
-3

Pouvez-vous m'aider à résoudre ce code?Simple Java Interface Implementation

interface Speaker { 

    void speak(); 

} 
public class Politician implements Speaker { 

    public void speak() { 
     System.out.println("Politician speaking"); 
    } 
} 
public class Lecturer implements Speaker { 

    public void speak() { 
     System.out.println("Lecturer spaeking"); 
    } 

} 

public class SpeakerTest { 

    public static void main(String[] args) { 

     //??????????????? how to execute? 


    } 
} 
+1

Que voulez-vous faire? – BobTheBuilder

+0

La question ici est évidente: Comment "instancié" et utiliser l'interface :) Upvoting ... – user3001

Répondre

1
public static void main(String[] args) { 

Speaker s1,s2; 
s1 = new Lecturer(); 
s2 = new Politician(); 

s1.speak(); // it print 'Lecturer spaeking' 
s2.speak(); // it print 'Politician speaking' 

} 
+0

Merci à tous de votre réponse rapide! J'ai trouvé ma réponse. Mais je dois initialiser chaque classe. Je pensais qu'il y aura un seul code de ligne qui exécutera toute la méthode à la fois. –

0
Speaker s = new AnInstanceOfAClassThatImplementsSpeaker();//instead of //??????????????? how to execute? 
s.speak(); // will call appropriate speak() method` 
0

Une interface est essentiellement un contrat qui méthodes sont visibles à d'autres classes. Contrairement aux classes abstraites, aucune fonctionnalité n'est à l'intérieur (sauf pour les méthodes statiques).

L'implémentation concrète des méthodes de l'interface est faite dans la classe (es) qui implémente l'interface. Les classes doivent donc conserver le contrat de méthode de l'interface.

Vous déclarez donc une variable de type Speaker dans votre méthode principale et affectez une instance de la classe (Politician ou Lecturer dans cet exemple).

public class SpeakerTest { 

    public static void main(String[] args) { 
     // Speaker is the Interface. We know it has a speak() method and do not care about the implementation (i.e. if its a politicial or a lecturer speaking) 
     Speaker firstSpeaker = new Politician(); 
     firstSpeaker.speak(); 
     Speaker secondSpeaker = new Lecturer(); 
     secondSpeaker.speak(); 

    } 
} 
+0

Voici mon autre question. S'il y a beaucoup de classes implémentées comme ça, je dois initier chaque classe. est-il possible d'en faire un code de ligne unique? est-ce possible? un autre algorithme? Merci d'avance. –