Maison  >  Article  >  Java  >  Détails masqués sur les variables membres en Java

Détails masqués sur les variables membres en Java

黄舟
黄舟original
2017-09-21 09:29:481854parcourir

L'éditeur suivant vous apportera un article sur le masquage des variables membres Java (explication avec exemples). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil.

1. S'il existe une variable membre portant le même nom dans la sous-classe et la classe parent, la variable membre de la sous-classe écrasera-t-elle la variable membre de la classe parent ? Regardons l'exemple suivant :


public class A {
  public int x=10;
}
public class B extends A {
  public int x=20;
}
public class C {
  public static void main(String[] args) {
    A a=new B();
    System.out.println(a.x);  //1
    B b=new B();
    System.out.println(b.x);  //2
    System.out.println(((A)b).x);  //3
  }
}

Le résultat de l'exécution de la méthode principale de la classe C est :

10
20
10

À travers les résultats, nous pouvons voir que la sous-classe n'écrasera pas les variables membres de la classe parente. Notre outil de débogage Eclipse peut également voir clairement cela dans l'objet a. Il existe deux variables membres de L'accès direct aux membres d'un objet est lié statiquement. L'explication officielle est la suivante :

Dans une classe, si les variables membres de la sous-classe ont le même nom que les variables membres de la classe. la classe parent, même si leurs types sont différents, tant que les noms sont les mêmes. Les variables membres de la classe parent seront masquées.

Dans une sous-classe, les variables membres de la classe parent ne sont pas accessibles simplement par référence. Au lieu de cela, les variables membres masquées de la classe parent doivent être obtenues à partir de la référence de la classe parent. De manière générale, nous ne recommandons pas de masquer les variables membres,

car cela rendra le code difficile à lire.

Pour les méthodes statiques, cela est similaire aux variables membres, comme suit :

Le résultat est le suivant :

public class A {
  public static void print() {
    System.out.println("A Static ");  
  }
}
public class B extends A {
  public static void print() {
    System.out.println("B Static ");  
  }
}
public class C {
  public static void main(String[] args) {
    A a=new B();
    a.print();
    
    B b=new B();
    b.print();
    ((A)b).print();
  }
}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn