Les constructeurs en java
Résolu
seljazou
Messages postés
175
Date d'inscription
Statut
Membre
Dernière intervention
-
seljazou Messages postés 175 Date d'inscription Statut Membre Dernière intervention -
seljazou Messages postés 175 Date d'inscription Statut Membre Dernière intervention -
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
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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?