En Java, est-il possible de remplacer les données de membre dans une sous-classe et d'avoir cette version surchargée comme étant les données utilisées dans l'implémentation d'une super classe?Remplacer les données de membre dans la sous-classe, utiliser dans la mise en œuvre de la superclasse?
En d'autres termes, voici ce que je suis en train de se rendre à arriver, et il ne se produit pas:
abstract public class BasicStuff {
protected String[] stuff = { "Pizza", "Shoes" };
public void readStuff() {
for(String p : stuff) {
system.out.println(p);
}
}
}
..
public class HardStuff extends BasicStuff {
protected String[] stuff = { "Harmonica", "Saxophone", "Particle Accelerator" };
}
Cette invocation:
HardStuff sf = new HardStuff();
sf.readStuff();
. .. imprime Pizza
et Shoes
. Je veux qu'il imprime ce dernier à la place.
Je reconnais que c'est une pratique OO plutôt médiocre; J'en avais besoin pour un cas très spécifique car je fais quelque chose avec la configuration et la réflexion XML.
Y a-t-il un modificateur qui peut rendre cela possible? Et oui, je reconnais qu'il existe des wrappers que l'on peut utiliser pour contourner ce problème dans ma sous-classe, c'est-à-dire en indiquant que le contenu de stuff[]
est maintenant stocké dans un tableau avec un nom différent, par exemple. J'essaie simplement de garder cela simple, et je suis curieux en principe.
Merci beaucoup d'avance!
Bien que ce soit ne surchargez pas que par définition, cette solution de modifier la valeur de la variable de membre de l'enfant est beaucoup plus élégant dans le cas où vous avez beaucoup de variables pour remplacer (un modèle de décorateur pour le soutien à thème, par exemple) . +1 – humbleSapiens