Lors de l'écriture d'une sous-classe, nous pouvons toujours déclarer des variables membres. Un cas particulier est que le nom de la variable membre déclarée est le même que le nom de la variable membre héritée de la classe parent, et le type déclaré peut être différent. case , la sous-classe masquera les variables membres héritées.
Les caractéristiques des sous-classes masquant les variables membres héritées sont les suivantes :
(1) Les objets et méthodes de sous-classe définis par la sous-classe elle-même exploitent des variables membres portant le même nom que la classe parent, qui fait référence à la variable membre redéclarée par la sous-classe.
(2) Les objets de sous-classe peuvent toujours appeler des méthodes héritées de la classe parent pour faire fonctionner les variables membres masquées par la sous-classe, c'est-à-dire que les variables membres exploitées par les méthodes héritées de la sous-classe doivent être des variables membres héritées ou masquées par la sous-classe.
Avis:
Les méthodes héritées des sous-classes ne peuvent fonctionner que sur les variables membres héritées et masquées des sous-classes. Une méthode nouvellement définie par une sous-classe peut opérer sur des variables membres héritées par la sous-classe et nouvellement déclarées par la sous-classe, mais elle ne peut pas opérer sur des variables membres masquées par la sous-classe.
Les sous-classes peuvent masquer les méthodes héritées en les remplaçant. Le remplacement de méthode est également appelé remplacement de méthode. Si une sous-classe peut hériter d’une méthode de la classe parent, alors la sous-classe a le droit de remplacer cette méthode. Le remplacement de méthode fait référence à la définition d'une méthode dans une sous-classe. Le type de cette méthode est cohérent avec le type de la méthode de la classe parent ou un sous-type du type de la méthode de la classe parent, et le nom de la méthode, le le nombre de paramètres, le type des paramètres et les méthodes de la classe parent sont exactement les mêmes. La méthode ainsi définie par une sous-classe est appelée une méthode remplacée par la sous-classe et n'est pas une nouvelle méthode.
Les sous-classes peuvent masquer les méthodes héritées grâce à la réécriture de méthodes et modifier l'état et le comportement de la classe parent pour les leurs. Si la méthode f() de la classe parent peut être héritée par la classe enfant, la classe enfant a le droit de remplacer f(). Une fois que la classe enfant remplace la méthode f() de la classe parent, la méthode héritée f() est masquée. Ensuite, la classe enfant a le droit de remplacer f(). Lorsqu'un objet de classe appelle la méthode f(), il doit appeler la méthode remplacée f(). Si la sous-classe ne remplace pas, mais hérite de la méthode f() de la classe parent, alors bien sûr l'objet créé par la sous-classe peut appeler la méthode f(), mais le comportement produit par la méthode f() est le même que celui de la classe parent.
La méthode remplacée peut non seulement utiliser des variables membres héritées et appeler des méthodes héritées, mais peut également utiliser des variables membres nouvellement déclarées de la sous-classe et appeler d'autres méthodes nouvellement définies, mais elle ne peut pas utiliser les variables membres et les méthodes masquées par la sous-classe. Si une sous-classe souhaite utiliser des méthodes cachées ou des variables membres, elle doit utiliser le mot-clé super.
Avis:
Lors de la substitution d'une méthode d'une classe parent, vous n'êtes pas autorisé à réduire les droits d'accès de la méthode, mais vous pouvez augmenter les droits d'accès. L'ordre des modificateurs de restriction d'accès des droits d'accès élevés à faibles est : public, protégé, convivial, privé. Par exemple : une sous-classe remplace la méthode f de la classe parent. L'autorisation d'accès de cette méthode dans la classe parent est le niveau protégé. Lorsque la sous-classe remplace, le niveau ne peut pas être inférieur à protégé.