J'ai 4 classes. L'un est une classe de pilote, un et une interface et deux classes d'enfants. Ceci est la classe d'interface:La mise en œuvre ne fonctionne pas
public interface Speaker {
public void speak();
public void announce(String announcement);
}
Ceci est la classe du pilote:
public abstract class SpeakerDriver implements Speaker {
public static void main (String [] args) {
Speaker ref;
Politician poli = new Politician("George Bush");
Lecturer lect = new Lecturer("Professor Cross");
Pastor past = new Pastor ("P.M. Smith");
ref = poli;
ref = lect;
ref = past;
System.out.println();
System.out.println(lect);
System.out.println(past);
}
}
et ce sont les deux classes d'enfants:
public class Pastor implements Speaker {
protected String announcement;
public Pastor (String name) {
}
@Override
public void speak() {
}
@Override
public void announce(String announc) {
System.out.println("I am the pastor at CCBC.");
}
}
public class Lecturer implements Speaker {
protected String announcement;
public Lecturer(String name) {
}
@Override
public void speak() {
}
@Override
public void announce(String announcement) {
System.out.println("I am the lecturer at CCBC");
}
}
Ma question est, quel est le problème avec mon implémentation qui fait ressembler la sortie:
[email protected] [email protected]
Quand ils devraient contenir le texte qui est dans le println.
C'est un peu bizarre de voir un paramètre passer à 'announce' et ensuite tomber sur le sol. Je comprends que c'est une exigence d'interface, mais cela devrait vous obliger à utiliser le paramètre d'une certaine manière ... De plus, c'est un peu bizarre que 'announce' ne retourne pas' String'. Dites juste. – Makoto
Vous ne nommez pas le locuteur, car vous ne sauvegardez pas ses valeurs dans le constructeur. De cette façon, vous pouvez remplacer 'toString()'. – Mordechai