En Java, les variables de classe ne peuvent pas être remplacées. Au lieu de cela, ce qui semble être une variable remplacée est en réalité une variable cachée. Pour clarifier ce concept, examinons un exemple :
class Dad { protected static String me = "dad"; public void printMe() { System.out.println(me); } } class Son extends Dad { protected static String me = "son"; } public void doIt() { new Son().printMe(); // Prints "dad" }
Ici, la fonction doIt affiche "papa" car la variable de classe me dans Son cache simplement le moi hérité de papa.
Le La principale différence entre le remplacement et le masquage est que le remplacement remplace l'implémentation de la méthode parent par l'implémentation de la méthode enfant, tandis que le masquage rend simplement le membre parent inaccessible à l'enfant. class.
Par conséquent, il n’existe aucun moyen approprié de remplacer une variable de classe. Au lieu de cela, pour imprimer "fils" dans l'exemple donné, il est nécessaire de modifier le constructeur ou de passer le paramètre name à la méthode comme dans :
public class Son extends Dad { private String me; public Son(String me) { this.me = me; } @Override public void printMe() { System.out.println(me); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!