Mission 7: QCM


Question 1: Héritage : vocabulaire

Si la classe C3 étend la classe C2, qui étend elle-même la classe C1, quel groupe d'affirmations est correct ?

Question 2: Extension de classe

Soit la classe C1 définie comme suit

public class C1 {
    private String s;
    private int n;
    public C1(String s, int n) {
        this.s = s;
        this.n = n;
    }
    public int m() {
        return n * n;
    }
}

Laquelle des définitions suivantes définit correctement une extension de C1 ?

Question 3: Extension et types

Soit les classes C1, C2, C3 et C4 définies comme suit

public class C1 {
    public C1() {
        // ...
    }
    // ...
}

public class C2 extends C1 {
    public C2() {
        // ...
    }
    // ...
}

public class C3 extends C2 {
    public C3() {
        // ...
    }
    // ...
}

public class C4 extends C2 {
    public C4() {
        // ...
    }
    // ...
}

Parmi les portions de code suivantes, laquelle est valide pour le compilateur Java ?

Question 4: Conversions de type

Soit les classes C1 et C2 définies comme suit

public class C1 {
    public C1() {
        // ...
    }
    // ...
}

public class C2 extends C1 {
    public C2() {
        // ...
    }
    // ...
}

On considère ensuite les instructions suivantes

C1 obj1 = new C1();
C2 obj2 = new C2();
C1 obj3 = new C2();

C2 conv12 = obj1;
C1 conv21 = obj2;
C2 conv32 = obj3;
C2 cast12 = (C2) obj1;
C1 cast21 = (C1) obj2;
C2 cast32 = (C2) obj3;

Parmi ces instructions, certaines causent une erreur à le compilation ou à l'exécution. Parmi les propositions ci-dessous, laquelle identifie correctement ces erreurs ?

Question 5: Re-définition et surcharge

Soit les classes C1 et C2 définies comme suit

public class C1 {
    // ...
    public int m1(String s, int n) {
        // ...
    }
}

public class C2 extends C1 {
    // ...
}

Parmi les définitions suivantes dans C2, laquelle constitue une re-définition (overriding) correcte de la méthode m1 de la classe C1 et non une surcharge (overloading) ?

Question 6: Modificateurs de visibilité

Considérez les classes C1, C2, C3 définies comme suit

public class C1 {
    // ...
    public    int publ() { /* ... */ }
    protected int prot() { /* ... */ }
    private   int priv() { /* ... */ }
    public int m1() { /* ... */ }
}

public class C2 extends C1 {
    // ...
    public int m2() { /* ... */ }
}

public class C3 {
    // ...
    public int m3() { /* ... */ }
}

Parmi les groupes d'affirmation suivants, lequel est correct ?

Question 7: Variables et méthodes de classe

On considère le code suivant

public class C {
    private static int svar;
    private int var;

    public void m1() { var = var + 1; }
    public void m2() { svar = svar + 1; }
    public static void m3() { var = var + 1; }
    public static void m4() { svar = svar + 1; }
}

Parmi ces définitions de méthode, lesquelles produisent une erreur de compilation ?

Question 8: Variables de classe et d'instance

On considère la classe C suivante

public class C {
    private static int svar = 0;
    private int var;

    public C() {
        var = 0;
    }

    public void m1() {
        var = var + 1;
        System.out.println(var);
    }

    public void m2() {
        svar = svar + 10;
        System.out.println(svar);
    }
}

On exécute les instructions suivantes

C c1 = new C();
c1.m1();
c1.m2();
C c2 = new C();
c2.m1();
c2.m2();

Quel est le résultat affiché ?

Question 9: La méthode equals

Soit la classe Point définie comme suit

public class Point {
    private int x;
    private int y;
    public C1(int x, int y) {
        this.x = x;
        this.y = y;
    }
    // ...
}

Dans cette classe, laquelle des définitions suivantes re-définirait correctement la méthode equals de la classe Object ?

Information

Author(s) Olivier BONAVENTURE
Deadline No deadline
Submission limit No limitation

Sign in