Lorsque vous utilisez la méthode constructeur d'une sous-classe pour créer un objet de la sous-classe, non seulement les variables membres déclarées dans la sous-classe se voient allouer de la mémoire, mais également les variables membres de la classe parent se voient allouer de l'espace mémoire, mais uniquement la partie héritée par le La sous-classe est allouée. Les variables membres servent de variables affectées aux objets de la sous-classe.
C'est-à-dire que bien que les variables membres privées de la classe parent aient alloué de l'espace mémoire, elles ne seront pas utilisées comme variables de l'objet de sous-classe de la même manière, si la sous-classe et la classe parent ne sont pas dans le même package, bien que conviviales ; les variables membres de la classe parent ont alloué de l'espace mémoire, mais pas en tant que variable d'un objet de sous-classe.
À ce stade, nous avons plus ou moins l’impression qu’un peu de mémoire semble être gaspillée lorsque la sous-classe crée l’objet. En effet, lorsqu'un objet est créé avec une sous-classe, les variables membres de la classe parent se voient également allouer de l'espace mémoire, mais seule une partie de celui-ci est utilisée comme variables affectées à l'objet de sous-classe. Par exemple : bien que les variables membres privées de la classe parent aient alloué de l'espace mémoire, elles ne sont pas utilisées comme variables de l'objet de sous-classe. Bien entendu, ce ne sont pas des variables d'un objet de la classe parent, car nous n'utilisons pas le parent. classe pour créer n’importe quel objet. Cependant, nous devons noter qu'il existe encore certaines méthodes dans la sous-classe qui sont héritées de la classe parent, mais ces méthodes peuvent opérer sur ces variables non héritées.
Par exemple : l'objet de la sous-classe ChinaPeople appelle la méthode héritée pour faire fonctionner des variables qui ne sont pas héritées par la sous-classe mais qui ont de l'espace mémoire alloué.
classPeople{privateintaverHeight=168;publicintgetAverHeight(){returnaverHeight;}}classChinaPeopleextendsPeople{inteight;publicvoidsetHeight(inth){//height=h+averHeight;//Illégal, la sous-classe n'hérite pas de averHeightheight=h;}publicintgetHeight(){returnheight ; }}publicclassMainpublicstaticvoidmain(Stringargs[]){ChinaPeoplezhangSan=newChinaPeople();System.out.println(la valeur de AverageHeight non héritée par l'objet de sous-classe est : +zhangSan.getAverHeight());zhangSan.setHeight(180);System .out .println(La valeur de la hauteur de la variable d'instance de l'objet de sous-classe est : +zhangSan.getHeight());}}
Les résultats en cours d'exécution sont les suivants :
La valeur de AverageHeight qui n'est pas héritée par l'objet de sous-classe est : 168. La valeur de la variable d'instance height de l'objet de sous-classe est : 180.