monter: Programmes Java illustrant le
précédent: Surcharge
Le premier exemple montre une classe ayant plusieurs constructeurs
(surcharge des constructeurs).
Constructeur1.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37
|
class Constructeur1{
public static void main(String[] argv){
(new A()).print();
(new A(7)).print();
(new A(false)).print();
(new A(12,false)).print();
(new A(17*5,(5<7)&('a'<'b'))).print();
}
}
class A{
int x;
boolean y;
A(){
x=10;
y=true;
}
A(int i){
x=i;
y=true;
}
A(boolean b){
x=10;
y=b;
}
A(int i, boolean b){
x=i;
y=b;
}
void print(){
System.out.print("Valeur de x: ");
System.out.println(x);
System.out.print("Valeur de y: ");
System.out.println(y);
System.out.println("---------------------");
}
}
|
Java2html
|
Le second exemple montre qu'un constructeur peut appeler un autre
constructeur de la même classe en utilisant la construction
this
(dans un sens absolument différent du this
utilisé
dans des méthodes pour désigner un objet).
Constructeur2.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33
|
class Constructeur2{
public static void main(String[] argv){
(new AA()).print();
(new AA(7)).print();
(new AA(false)).print();
(new AA(12,false)).print();
}
}
class AA{
int x;
boolean y;
AA(int i, boolean b){
x=i;
y=b;
}
AA(){
this(10,true);
}
AA(int i){
this(i,true);
}
AA(boolean b){
this(10,b);
}
void print(){
System.out.print("Valeur de x: ");
System.out.println(x);
System.out.print("Valeur de y: ");
System.out.println(y);
System.out.println("---------------------");
}
}
|
Java2html
|
Le troisième programme présente une erreur classique concernant les
constructeurs. Ce programme ne compile pas. Voyez quelle erreur il
provoque.
Constructeur3.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13
|
// une erreur classique: ce programme ne compile pas. Pourquoi?
class A{
private int x;
A(int i){
x=i;
}
}
class B extends A{
int y;
}
|
Java2html
|
Le dernier exemple d'utilisation de constructeurs est un exemple de
l'appel à un constructeur de la superclasse avec le mot-clé
super
.
Constructeur4.java
|
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27
|
// l'erreur est réparée
class Constructeur4{
public static void main(String[] argv){
A x = new A(2);
A y = new B(4,5);
y.print();
}
}
class A{
private int x;
A(int i){
x=i;
}
void print(){
System.out.print("Valeur de x : ");
System.out.println(x);
}
}
class B extends A{
int y;
B(int a, int b){
super(a); //pourquoi est-on obligé d'utiliser "super"?
y=b;
}
}
|
Java2html
|
Barthelemy Francois
2003-03-03