Les constructeurs en java
Résolu
seljazou
Messages postés
185
Statut
Membre
-
seljazou Messages postés 185 Statut Membre -
seljazou Messages postés 185 Statut Membre -
Bonjour,
j'aimerai savoir si on est obligé de definir les constructeurs en JAVA AVANT de créer un objet.
merci :)
j'aimerai savoir si on est obligé de definir les constructeurs en JAVA AVANT de créer un objet.
merci :)
A voir également:
- Les constructeurs en java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
2 réponses
Salut,
apparemment oui, je viens de vérifier ;)
Si je ne m'abuse, les membres de ta classe seront instanciés à leur valeur « par défaut », c.-à-d. :
– 0 pour les nombres,
– "" pour les chaînes,
– '' pour les chars,
– etc.
Si certains de tes membres sont des objets, à toi de t'assurer que les instanciations se font comme tu l'attends ;)
apparemment oui, je viens de vérifier ;)
class constructorTest {
public static class Bidule {
public int a;
public int b;
public String toString() {
return "("+a+", "+b+")";
} // toString
} // class Bidule
public static void main (String[] args) {
Bidule zap = new Bidule();
System.out.println(zap); // affiche (0, 0)
}
}
Si je ne m'abuse, les membres de ta classe seront instanciés à leur valeur « par défaut », c.-à-d. :
– 0 pour les nombres,
– "" pour les chaînes,
– '' pour les chars,
– etc.
Si certains de tes membres sont des objets, à toi de t'assurer que les instanciations se font comme tu l'attends ;)
Mdr c'est pas ma faute si je suis fort en java, j'en bouffe tous les jours avec mes études ^^
Le rôle du new c'est juste d'instancier l'objet. S'il initialise les attributs, c'est juste par « sécurité » (en C++, par exemple, ils ne sont pas initialisés et on se retrouve avec des valeurs inattendues genre 51354823 à la place de 0).
Quand tu fais new, Java recherche un constructeur dans ta classe. S'il n'en trouve pas il se débrouille comme je l'ai dit pour initialiser les membres ; s'il en trouve un, il l'appelle.
Techniquement, new a un autre rôle : il trouve de la mémoire pour l'objet. C'est-à-dire qu'il va réserver un emplacement dans la mémoire vive pour stocker l'objet pendant tout le temps où on en aura besoin. Mais en Java, on n'a pas besoin de se soucier des histoires de mémoire, il gère tout tout seul.
Attention avec les attributs qui sont eux aussi des objets : Java ne sait pas comment les initialiser et il mettra juste null. Exemple :
Ici on voit que Truc a un constructeur, mais Java ne l'utilise pas tout seul. C'est à toi de lui dire. Et pour ça, il faut faire un new dans le constructeur de Machin :
Le rôle du new c'est juste d'instancier l'objet. S'il initialise les attributs, c'est juste par « sécurité » (en C++, par exemple, ils ne sont pas initialisés et on se retrouve avec des valeurs inattendues genre 51354823 à la place de 0).
Quand tu fais new, Java recherche un constructeur dans ta classe. S'il n'en trouve pas il se débrouille comme je l'ai dit pour initialiser les membres ; s'il en trouve un, il l'appelle.
Techniquement, new a un autre rôle : il trouve de la mémoire pour l'objet. C'est-à-dire qu'il va réserver un emplacement dans la mémoire vive pour stocker l'objet pendant tout le temps où on en aura besoin. Mais en Java, on n'a pas besoin de se soucier des histoires de mémoire, il gère tout tout seul.
Attention avec les attributs qui sont eux aussi des objets : Java ne sait pas comment les initialiser et il mettra juste null. Exemple :
class autreTest {
public static class Machin {
public int n;
public Truc t;
public Machin() {
n = 2;
// on n'initialise pas t
} // Machin
public String toString() {
return "("+n+", "+t+")";
} // toString
} // class Machin
public static class Truc {
public String s;
public double x;
public Truc() {
s = "blabla";
x = 7.4;
} // Truc
public String toString() {
return "["+s+", "+x+"]";
} // toString
} // class Truc
public static void main (String[] args) {
Machin m = new Machin();
System.out.println(m); // affiche (2, null)
}
}
Ici on voit que Truc a un constructeur, mais Java ne l'utilise pas tout seul. C'est à toi de lui dire. Et pour ça, il faut faire un new dans le constructeur de Machin :
class autreTest { // version corrigée
public static class Machin {
public int n;
public Truc t;
public Machin() {
n = 2;
t = new Truc();
} // Machin
public String toString() {
return "("+n+", "+t+")";
} // toString
} // class Machin
public static class Truc {
public String s;
public double x;
public Truc() {
s = "blabla";
x = 7.4;
} // Truc
public String toString() {
return "["+s+", "+x+"]";
} // toString
} // class Truc
public static void main (String[] args) {
Machin m = new Machin();
System.out.println(m); // affiche (2, [blabla, 7.4])
}
}
La fonction main() c'est le point de départ du programme, et quand elle se termine c'est le programme qui se termine.
La plupart du code est ailleurs, dans d'autres fonctions de la classe ou dans d'autres classes. C'est mieux pour la lisibilité.
Regarde les deux lignes de son main(), c'est effectivement tout ce que le programme fait quand on l'exécute ;). Mais il a besoin du reste pour exécuter ça.
La plupart du code est ailleurs, dans d'autres fonctions de la classe ou dans d'autres classes. C'est mieux pour la lisibilité.
Regarde les deux lignes de son main(), c'est effectivement tout ce que le programme fait quand on l'exécute ;). Mais il a besoin du reste pour exécuter ça.
le constructeurs sert t il seulement à instancier les attributs (variables) de la classe?
Quand on instancie une classe ( on crée un objet de cette classe), le new, je croyais qu'il servait à initialiser les attributs... a t il d'autres rôles?