Bonjour,
J'ai une classe mère abstraite Vehicule et deux classes filles Camion et Voiture
Les constructeurs des classes filles pointent vers le constructeur de Vehicule pour incrémenter de 1 le champs matricule
Etrangement ce qui fonctionne pour Camion (initialisation du constructeur de Vehicule incrémentation de 1 du champs matricule )ne fonctionne pas avec Voiture
pourtant le code est le même
Mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
namespace Hello;
 
public abstract class Vehicule
{
    static int matricule = 0;
    private int annee_du_modele;
    private int prix;
 
     static Vehicule()
    {
 
        matricule=matricule+1;
        Console.WriteLine("matricule ds constructeur Vehicule"+matricule);
 
 
    }
    public int Matricule{
 
 
 
        get { return matricule; }
        set { matricule = value; }
 
 
 
 
 
 
 
        }
    public int Annee_de_modele
    {
 
        get { return annee_du_modele; }
        set { annee_du_modele = value; }
    }
    public int Prix
    {
        get { return prix; }
        set { prix = value; }
    }
 
 
 
    abstract public void Demarrer();
    abstract public void Accelerer();
 
 
 
 
    public override string ToString()
    {
        Console.WriteLine(matricule + " " + annee_du_modele + " " + prix);
        return matricule + " " + annee_du_modele + " " + prix;
    }
}
    public class Camion: Vehicule
{
 
    public Camion() : base()
    {
        Console.WriteLine("construc Camion");
    }
 
    public override void Demarrer()
    {
        Console.WriteLine("Le camion demarre");
    }
 
    public override void Accelerer()
    {
        Console.WriteLine("Le camion accelere");
 
    }
 
 
}
public class Voiture : Vehicule
{
 
    public Voiture() : base()
    {
        Console.WriteLine("construc Voiture");
    }
 
    public override void Demarrer()
    {
        Console.WriteLine("La voiture demarre");
 
    }
 
    public override void Accelerer()
    {
        Console.WriteLine("La voiture accelere");
 
    }
 
 
}
public class class1
{
    static void Main(string[] args)
    {
 
        Vehicule camion = new Camion();
                 camion.Annee_de_modele=1974;
                 camion.Prix = 650;
                 camion.ToString();
 
        Vehicule voiture = new Voiture();
                 voiture.Annee_de_modele = 1995;
                 voiture.Prix = 2800;
                 voiture.ToString();
 
 
    }
 
 
}
La sortie :
matricule ds constructeur Vehicule1
construc Camion
1 1974 650
construc Voiture
1 1995 2800
Donc avec Voiture je devrais avoir
matricule ds constructeur Vehicule2
or je n'ai Rien
Lors de l'exécution de Vehicule voiture = new Voiture(); le constructeur de Véhicule n'est pas appelé et matricule n'est pas incrémenté à 2
Je suis debutant merci pour votre aide