Nous savons que les tigres sont des animaux. Si la classe animale est la classe parente de la classe tigre, il convient de noter que lorsqu'un tigre est un animal, le tigre perdra ses attributs et fonctions uniques. Du point de vue de la pensée humaine, dire « le tigre est un animal » appartient à la méthode de pensée ascendante, qui est similaire à l'objet de transformation ascendante dans le langage Java.
Supposons que la classe Animal soit la classe parent de la classe Tiger lorsque vous utilisez une sous-classe pour créer un objet et placez la référence de cet objet dans l'objet de la classe parent, par exemple :
Animala;a=newTiger();
ou
Animala;Tigerb=newTiger();a=b;
À ce stade, appeler l'objet a un objet transformé vers le haut de l'objet b revient à dire « un tigre est un animal ». La sous-classe est responsable de la création de l'entité de l'objet transformé, mais l'objet transformé perdra certains attributs et fonctions de l'objet d'origine.
L'objet de transformation ascendante présente les caractéristiques suivantes :
(1) L'objet transformé ne peut pas exploiter les variables membres nouvellement ajoutées de la sous-classe et ne peut pas appeler les nouvelles méthodes de la sous-classe.
(2) L'objet transformé peut accéder aux variables membres héritées ou masquées par la sous-classe, et peut également appeler des méthodes héritées par la sous-classe ou des méthodes d'instance remplacées par la sous-classe. L'objet upcast exploite les méthodes héritées de la sous-classe ou les méthodes d'instance remplacées par la sous-classe, et sa fonction équivaut à appeler ces méthodes sur l'objet de sous-classe. Par conséquent, si une sous-classe remplace une méthode d'instance de la classe parent, lorsque l'objet upcast de l'objet appelle cette méthode d'instance, la méthode d'instance remplacée par la sous-classe doit être appelée.
Avis:
(1) Ne confondez pas les objets créés par la classe parent avec les objets de type up de l'objet de sous-classe.
(2) L'objet upcast de l'objet peut être forcé à être converti en objet de sous-classe. À ce stade, l'objet de sous-classe possède tous les attributs et fonctions de la sous-classe.
(3) Vous ne pouvez pas attribuer de références aux objets créés par la classe parent aux objets déclarés par la sous-classe. Par exemple, vous ne pouvez pas dire « La personne est chinoise ».