Maison  >  Article  >  Java  >  Explication détaillée de l'utilisation du super mot-clé en Java

Explication détaillée de l'utilisation du super mot-clé en Java

黄舟
黄舟original
2017-10-14 09:35:071896parcourir

Cet article présente principalement des informations pertinentes sur la façon d'utiliser le super mot-clé Java en détail. J'espère que cet article pourra aider tout le monde et permettre à chacun d'avoir une compréhension approfondie du super mot-clé. Les amis dans le besoin peuvent s'y référer

<.>

Le super mot-clé dans la méthode constructeur

Dans la méthode constructeur d'une sous-classe Java, le super mot-clé peut être utilisé pour appeler la méthode constructeur de la classe parent. Son utilisation est la suivante :


1) super(); accéder au constructeur sans paramètre dans la classe parent


2) super (paras…); classe parent La fonction membre yyy


super() appelle le constructeur sans paramètre de la classe parent, mais même si super() n'est pas utilisé, le constructeur sans paramètre de la classe parent sera appelé par défaut. Le constructeur sans paramètre de la classe parent peut être un constructeur sans paramètre personnalisé ou un constructeur par défaut généré automatiquement par le compilateur. Cependant, si un constructeur paramétré est défini dans la classe parent, mais qu'aucun constructeur sans paramètre n'est défini, le compilateur ne générera pas de constructeur par défaut et le constructeur ne peut pas être appelé via super(). De plus, si un constructeur privé sans argument est défini dans la classe parent, il ne peut pas être appelé via super().


super(paras…); est utilisé pour appeler un constructeur paramétré dans la classe parent.


super appelle le constructeur de la classe parent et doit être exécuté dans la première ligne du constructeur de la sous-classe. Si un constructeur de classe parent avec des paramètres est appelé, les variables membres non statiques de la sous-classe ne peuvent pas être utilisées dans les super paramètres (les variables membres statiques peuvent être utilisées, car les variables membres statiques ont été initialisées avant l'exécution du constructeur), ni être utilisé Appels associés à this ou super. Par exemple, super(super.getClass().getName());


Vous pouvez également utiliser le mot-clé super dans le constructeur pour accéder aux variables membres et aux fonctions membres de la classe parent. Son utilisation est la même que celle du super mot-clé dans les méthodes non constructeurs.

Le mot-clé super dans les méthodes non constructeurs

Dans une sous-classe Java, vous pouvez utiliser le mot-clé super pour appeler des variables et des méthodes membres dans la classe parent. Son utilisation est.


1) super.xxx ; accédez à la variable membre xxx dans la classe parent

2) super.yyy(paras…); accédez à la fonction membre yyy dans la classe parent

Le mot-clé super ne peut pas dépasser le contrôle des autorisations d'accès lors de l'accès aux variables membres et aux fonctions membres de la classe parent, et ne peut pas accéder aux variables et méthodes membres privées de la classe parent. Par exemple :


class a {
  private int mNum = 0;
}
class b extends a {
  public void setNum(int i) {
    super.mNum = i;   //错误,不能访问父类的private成员
  }
}
Lorsqu'il existe plusieurs niveaux de relations d'héritage, super ne peut appeler que les variables et méthodes membres de sa propre classe parent, et ne peut pas appeler directement le parent. classe au-delà de la classe parent. Variables ou méthodes membres dans la classe parent. Bien sûr, si les variables ou méthodes membres de la classe parent de la classe parent sont héritées par la classe parent, alors les variables et méthodes membres peuvent être appelées via super, mais à ce stade, les variables et méthodes membres de la classe parent sont effectivement appelé. Par exemple :


class a {
  protected int mNum = 0;
  public void setNum(int i) {
    mNum = i;
  }
}
class b extends a {
  public void setNum(int i) {
    mNum = i * i;
  }
}
class c extends b {
  public void setNum(int i) {
    super.setNum(i);    //调用的是b中的setNum()方法
    super.super.setNum(i); //错误,不支持的用法
  }
}


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