« 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  personnes.Personne;  
2import import personnes.Enseignant;  
 
public  class  UpDownExample {  
2import personnes.Enseignant;  
{
public  static  void  main(final  String[]  args) {  
{
// Non montré dans ce code : class Enseignant extends Personne
Personne  p;  
6         Enseignant  e  =  new  Enseignant("Durand","Emilie",  
"2780633...", 3, "Cloud␣Computing");  
 
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) {  
"; p est un Enseignant" +  (p  instanceof  Enseignant) );  
 
Personne p;  
 
6        Enseignant e = new Enseignant("Durand","Emilie",  
 
"2780633...",3,"Cloud␣Computing");  
 
p = e;      // UpCast  
 
System.out.println("Apres␣p␣=␣e;␣p␣est␣une␣Personne␣"  
 
10                + (p instanceof Personne)  
 
+ ";␣p␣est␣un␣Enseignant␣"  
 
+ (p instanceof Enseignant));  
 
e = (Enseignant) p; // Downcast  
 
14        System.out.println("Apres␣e␣=␣p;␣e␣est␣une␣Personne␣"  
 
+ (e instanceof Personne)  
 
+ ";␣e␣est␣un␣Enseignant␣"  
 
+ (e instanceof Enseignant));  
 
18    }  
 
e  =  (Enseignant)  p;  //  Downcast  
System.out.println(
"Apres e = p; e est une Personne " + (e instanceof Personne) +
";␣e␣est␣un␣Enseignant␣"   + (e instanceof Enseignant) );
}
}
</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.