C'est peut-être une question de débutant mais je pense que ce sera utile pour certains débutants.
Ma question est la suivante: p> Quelle est la différence entre ce type d'instanciation ? p> et p>
3 Réponses :
Ils sont essentiellement identiques, mais le compilateur traite étudiant code> en tant que personne code> sans aucune information de type de la classe de béton employé code> p>
Mais en même temps, il traite la personne étudiante en tant qu'employé, je suis un peu confus!
@Ghaithbriki Vous pouvez le jeter à Employé Code> et cela fonctionnera sans classcastexception. Vous voudrez peut-être en savoir plus sur le polymorphisme.
C'est fondamentalement la même chose, mais la différence est que:
1- dans la première déclaration: p> ici 2- mais dans le second: p> ici Vérifiez Exemple: strong> P> Nous pouvons voir que dans cet exemple, où nous utilisons ceci est A Live étudiant code> 'T Accès Employee Code> Classe Spécifique Méthodes CODE> ou Attributs CODE> Comme c'est une personne code> objet code> qui contient un employé < / code> instance. p> étudiant code> peut bénéficier des deux Employee code> et Personne code> Attributs et méthodes. P> Java Code> Strong>. p> integer code> et objet code> classes : p>
suivi est la différence dans les deux instanciations. P>
(1)
Dans cette instanciation (2)
ici, dans la deuxième instanciation Ceci est la différence de base dans ces deux déclarations. P> Student de la personne = nouvel employé ("Dove", "Femme", 0); Code> P>
Student code> est un objet de la personne code> personne code> de sorte qu'il ne peut pas accéder à Employee code> Classe spécifique Méthodes code> ou attributs code>. p>
Étudiant Employé = Nouveau employé ("Dove", "Femme", 0); Code> P>
Student code> peut accéder à Employee code> Classe spécifique méthodes code> et attributs code> ainsi que Personne code> classe parce qu'il s'étend dans employé code> classe. P>
Le type de variable cible est la seule différence. L'utilisation du type d'abstrait vous limite à utiliser uniquement l'API définie par elle.
Disons que votre classe d'employé fournit une méthode de votre classe de personne. À moins que vous n'ayez monté votre objet à un objet employé, votre première instanciation ne sera pas en mesure d'utiliser cette méthode, car elle est déclarée être une personne et se limite aux possibilités de la personne.