Exercices dirigés n°4 - corrigé

publicité
ED n°4 corrigé
Exercices dirigés n°4 - corrigé
Résultat de l'exécution du programme suivant :
public class ED4 {
private int x = 0;
private static int y = 0;
public ED4(int x,int y){
this.x = x;
this.y = y;
}
void println( int a ){
int x = 1;
System.out.println(a);
x=x+5;
System.out.println(x);
System.out.println(this.x);
System.out.println(y);
y=y+2;
}
}
public static void main( String[] args ){
ED4 obj = new ED4(5,10);
obj.println(45);
System.out.println(ED4.y);
}
Solution
45
6
5
10
12
Exécuter le programme suivant (C1.java):
public class C1{
public static void main(String[] args){
B b = new B();
}
}
class A{
public A(){
System.out.println("Je suis dans A");
}
}
class B extends A{
public B(){
1
ED n°4 corrigé
System.out.println("Je suis dans B");
}
}
Solution
Je suis dans A
Je suis dans B
Quel est le résultat de l'exécution de ce programme (C2.java)? Le constructeur sans paramètre de
la classe Object est-il invoqué lorsque new B(5) est exécuté :
public class C2{
public static void main(String[] args){
B b = new B(5);
}
}
class A{
public A(){
System.out.println("Je suis dans A);
}
}
public class B extends A{
public B(int x){
System.out.println("Je suis dans B");
}
}
Solution
- le constructeur public A() est absent
- une seule classe publique par fichier
Quels sont les problèmes identifiés à la compilation dans ce fichier source (C3.java):
public class C3{
public static void main(String[] args){
B b = new B();
}
}
class A{
public A(int x){
System.out.println("Je vaux: "+x);
}
}
public class B extends A{
public B(){
System.out.println("Je suis dans B");
}
}
Solution
- le constructeur public A() est absent
- une seule classe publique par fichier
2
ED n°4 corrigé
La classe B peut-elle être compilée ? Quelle que soit la réponse, déterminer le modificateur le plus
adapté aux membres i et m de la classe A ?
// fichier A.java
package p1;
public class A{
int i;
void m(){System.out.println("i= "+i);}
}
// fichier B.java
package p1;
public class B extends A{
public void main(String[] args){
System.out.println("i= "+i);
m();
}
}
Solution
- oui car les classes A et B appartenant au même package, les membres sans
modificateur leur sont accessibles
- protected
Les assertions suivantes sont elles vraie ou fausse ?
- un membre protected (donnée ou méthode) peut-il être accédé par n'importe quelle classe
du même package ?
- un membre protected (donnée ou méthode) peut-il être accédé par n'importe quelle classe
de différents packages ?
- un membre protected (donnée ou méthode) peut-il être accédé par ses sous-classes de
différents packages ?
- une classe final peut-elle être instanciée ?
- une classe final peut-elle être étendue (dérivée) ?
- une méthode final peut-elle être surchargée ?
Solution
-
non
non
oui
oui
non
oui
Déterminer 2 façons de compléter le programme suivant pour que le constructeur de la classe B
initialise les variables d'instance x et y :
public class A{
protected int x,y;
public A( int x,int y ){
this.x = x;this.y = y;
}
}
public class B extends A{
private int r;
public B( int x,int y,int r ){
3
ED n°4 corrigé
this.r = r;
}
}
Solution
- super(x,y)
- this.x = x; this.y = y;
4
Téléchargement