Précédent Index Suivant

1.2   Sous-types et typage dynamique

En Java la relation d'héritage entraine la relation de sous-typage (£). Si t2 £ t1T, alors toute valeur de type t2 peut etre utilisée en place et lieu d'une valeur de type t1.

Soit le programme Java suivant :
class A {
    int m1 (A x) { System.out.println(1+" "); return (1);}
    boolean n1 (A x, A y) {System.out.println(4+" "); return (false);}
}

class B extends A {
    int m2 (B x) { System.out.println(5+" "); return (5);}
    int m1 (A x) { System.out.println(6+" "); return (6);}
    boolean n2 (B x, B y) {System.out.println(8+ " "); return (false);}
}


class ex0 {
    public static void main(String [] args) {
        A a1 = new A ();
        B b1 = new B();
        A a2 = b1; 
        B b2 = (B)a2;;

        System.out.println("*1-------");
        a1.m1(a1);
        b1.m2(b1);
        b1.m1(b1);
        a1.n1(a1,a1);
        b1.n2(b1,b1);
        System.out.println("*2-------");
        a1.m1(b1);
        b1.m2((B)a2);
        b1.m1(b1);
        a1.n1(b1,b1);
        b1.n2((B)a2,b2);
        System.out.println("*3-------");
        a2.m1(a1);
        a2.n1(b1,b1);
  
    }
}



Son exécution donne :
*1-------
1 
5 
6 
4 
8 
*2-------
1 
5 
6 
4 
8 
*3-------
6 
4 

Précédent Index Suivant