Sous-classes : hériter ou non des champs privés ?
Dans une énigme d'entretien, la question de savoir si les sous-classes héritent de champs privés suscite un débat. Dans un premier temps, on pourrait s’attendre à une réponse négative en raison du manque d’accès direct à ces domaines. Cependant, l'intervieweur affirme que les sous-classes en héritent, citant des méthodes d'accès indirect et de réflexion.
Malgré le point de vue de l'intervieweur, la spécification du langage Java (JLS) indique clairement que les membres privés d'une classe ne sont pas hérités par ses sous-classes. . Cette distinction est cruciale lorsqu’on considère l’héritage dans le contexte de classes plutôt que d’objets. Les objets des sous-classes contiennent sans aucun doute les champs privés de leurs superclasses.
L'opinion de l'intervieweur peut découler d'une définition plus large de l'héritage. Les objets des sous-classes héritent de toutes les données et méthodes de leurs classes parentes, y compris les champs privés. Cependant, du point de vue d'une classe, l'héritage fait référence à la syntaxe et aux capacités disponibles pour une classe enfant. Les membres privés ne sont pas accessibles de l'extérieur de leur classe ou de leurs sous-classes, et par conséquent, les sous-classes n'en héritent pas dans ce sens.
Pour conclure, alors que les objets des sous-classes héritent des valeurs de données des champs privés de leurs classes parentes, les sous-classes eux-mêmes n’héritent pas de ces champs d’un point de vue syntaxique ou d’accessibilité. Cette compréhension s'aligne sans ambiguïté sur la définition officielle du langage Java.
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!