Vous êtes sur la page 1sur 2

SUPMTI - 2022-2023

TD JAVA
A. EL GHAZI
Série n° : 4

Exercice 1 :
On considère les définitions de classes suivantes :
class A {
void f(A o) {
System.out.println("void f(A o) dans A");
}
}
class B extends A {
void f(A o) {
System.out.println("void f(A o) dans B");
}
}

1. Qu'affiche le fragment de programme suivant ?


A a = new A();
A ab = new B();
B b = new B();

a.f(a);
a.f(ab);
a.f(b);
ab.f(a);
ab.f(ab);
ab.f(b);
b.f(a);
b.f(ab);
b.f(b);

On ajoute maintenant à la classe B la méthode suivante


void f(B o) {
System.out.println("void f(B o) dans B");
}

2. Est-ce une redéfinition ou une surcharge ? Qu'affiche alors le fragment de programme


précédent.

Exercice 2 :
Dans cet exercice nous avons une classe fonctionnaire qui dérive de la classe personne et une classe
gestionnaire qui dérive de la classe fonctionnaire (on suppose que la classe fonctionnaire possède un
seul attribut salaire).

On augmente le salaire des fonctionnaires avec un pourcentage. Quant aux gestionnaires, leurs
salaires augmentent deux fois, augmentation avec les fonctionnaires plus une prime de gestion.

1
SUPMTI - 2022-2023
TD JAVA
A. EL GHAZI
Série n° : 4

Classe fonctionnaire
1. Créer la classe fonctionnaire avec toutes les méthodes et attributs nécessaires.
2. Ajouter la méthode void augmenterSalaire (int pourcentage) qui augmente le salaire des
fonctionnaires avec un certain pourcentage.

Classe Gestionnaire
1. Redéfinir les constructeurs et la méthode augmenterSalaire dans la classe gestionnaire.

Exercice 3 :
Les exemples suivants sont-ils corrects ?

Exemple 1 :
class A {
public void f() { System.out.println("Bonjour."); }
}
class B extends A {
private void f() { System.out.println("Bonjour les amis."); }
}

Exemple 2 :
class A {
public int f(int a) { return a++; }
}
class B extends A {
public int f(int a, int b) { return a+b;}
}
class test {
A obj = new B();
int x = obj.f(3);
int y = obj.f(3,3);
}

Vous aimerez peut-être aussi