« Java/Annexe/Nombres » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n) |
Aucun résumé des modifications |
||
Ligne 37 :
== Upcasting et dowcasting ==
<syntaxhighlight lang="java">
import
▲2import personnes.Enseignant;
{
{
// Non montré dans ce code : class Enseignant extends Personne
p = e; // UpCast
▲public class UpDownExample {
System.out.println(
"Apres p = e; p est une Personne " + (p instanceof Personne) +
▲public static void main(final String[] args) {
▲Personne p;
▲6 Enseignant e = new Enseignant("Durand","Emilie",
▲"2780633...",3,"Cloud␣Computing");
▲+ (p instanceof Enseignant));
e = (Enseignant) p; // Downcast ▼
+ ";␣e␣est␣un␣Enseignant␣" ▼
System.out.println(
"Apres e = p; e est une Personne " + (e instanceof Personne) +
}
}
</syntaxhighlight>
Dans cet exemple, la variable p de type référence de classe parente peut recevoir la référence d’un objet de classe dérivée, contenue dans e. Inversement, une fois qu’une référence de classe parente contient une référence vers un objet de la classe dérivée, il est possible de mettre cette valeur dans une variable pouvant contenir une référence de la classe parente. Il faut cependant informer le compilateur de cette possible perte de sens en castant la référence.
|