Java Polymorphisme Comment appeler super méthode de classe pour la sous-classe de l'objet
Voici un exemple de ce que je suis en train de demander
de la superclasse Name.java
public class Name{
protected String first;
protected String last;
public Name(String firstName, String lastName){
this.first = firstName;
this.last = lastName;
}
public String initials(){
String theInitials =
first.substring(0, 1) + ". " +
last.substring(0, 1) + ".";
return theInitials;
}
et puis la sous-classe est ThreeNames.java
public class ThreeNames extends Name{
private String middle;
public ThreeNames(String aFirst, String aMiddle, String aLast){
super(aFirst, aLast);
this.middle = aMiddle;
}
public String initials(){
String theInitials =
super.first.substring(0, 1) + ". " +
middle.substring(0, 1) + ". " +
super.last.substring(0, 1) + ".";
return theInitials;
}
donc, si je créer un Threename objet avec ThreeNames example1 = new ThreeNames("Bobby", "Sue" "Smith")
et ensuite appeler System.out.println(example1.initials());
je vais obtenir B.S.S.
je le conçois.
Ma question est est-il un moyen d'appeler les initiales de la méthode qui est dans le Nom de la classe ainsi que mon résultat est juste B.S.
génial merci pour les réponses!
double possible de Accès super classe de fonction à l'aide de la sous-classe d'objets
double possible de Accès super classe de fonction à l'aide de la sous-classe d'objets
OriginalL'auteur Kailua Bum | 2013-02-16
Vous devez vous connecter pour publier un commentaire.
pas. une fois que vous avez remplacé une méthode, puis toute invocation de cette méthode à partir de l'extérieur sera acheminé à votre méthode de remplacement (sauf bien sûr si son substituée encore plus bas dans la chaîne d'héritage).
vous pouvez seulement appeler les super méthode à partir de l'intérieur de votre propre méthode redéfinie comme suit:
mais ce n'est pas ce que vous cherchez ici.
vous pourriez peut-être tourner à votre méthode:
puis dans la sous-classe le faire:
OriginalL'auteur radai
Il y a beaucoup de façons de le faire. D'une manière: ne pas remplacer
Names#initials()
dansThreeNames
.Une autre façon est d'ajouter une méthode à
ThreeNames
qui délègue àNames#initials()
.OriginalL'auteur Matt Ball
Je serait plutôt de laisser les initiales seul dans la super-classe et d'introduire une nouvelle méthode qui sera de retour le complet initiales. Donc, dans votre code, je voudrais simplement renommer les initiales de la méthode dans ThreeNames à autre chose. De cette façon, vos initiales méthode est la même à travers la mise en œuvre de Nom
OriginalL'auteur ZeusSelerim