next up previous
monter: Programmes Java illustrant le précédent: Surcharge

Constructeurs

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 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 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