En Java, il peut y avoir des cas où le développeur doit réaffecter les valeurs conformément aux exigences. Par exemple, la mise à jour des entrées du constructeur de temps à autre maintient le code intact. Dans de tels cas, le «
Copier le constructeur"En Java devient utile pour modifier les fonctionnalités du code conformément aux exigences données.
Cet article discutera de l'utilisation du «constructeur de copie» à l'aide de Java.
Qu'est-ce qu'un «constructeur de copie» en Java?
Le "Copier le constructeur»Correspond à un constructeur qui crée / fait un objet en l'initialisant avec l'objet de classe identique, créé avant. Pour créer un constructeur de copie, l'objet de classe existant est placé comme argument et les valeurs des variables d'instance sont initialisées avec les valeurs accumulées dans l'objet.
Exemple 1: Application d'un «constructeur de copie» pour copier les valeurs d'objet «allouées» dans Java
Cet exemple utilise le «Copier le constructeur«Pour copier les valeurs d'objet allouées à partir d'un autre objet créé en enveloppe l'objet alloué comme argument:
classprofile
Nom de chaîne;
en âge;
Profil (nom de chaîne, Int Age)
ce.name = name;
ce.âge = âge;
Profil (profil ob)
Système.dehors.println ("Copier Constructeur invoqué!");
ce.nom = ob.nom;
ce.âge = ob.âge;
Dans le code de classe ci-dessus, appliquez les étapes suivantes:
- Tout d'abord, définissez une classe nommée «Profil".
- Dans sa définition, spécifiez les variables fournies.
- Après cela, incluez le constructeur de classe comprenant les paramètres indiqués identiques à ceux spécifiés.
- Dans la définition du constructeur, reportez-vous aux variables spécifiées via «ce»Et attribuez-leur les arguments passés.
- Maintenant, créez un constructeur de copie ayant le paramètre déclaré.
- Note: "ob"Dans le constructeur de copie pointe vers l'objet de classe créé.
- Dans sa définition, se référer également aux variables spécifiées et leur attribuer les valeurs déjà allouées via l'objet passé.
Maintenant, passons aux lignes de code suivantes:
Copycstructor de classe publique
public static void main (String args [])
Profil object1 = nouveau profil ("Harry", 18);
Profil object2 = nouveau profil (object1);
Système.dehors.println ("\ nBefore Modification des valeurs:");
Système.dehors.println (objet1.nom + "" + objet1.âge);
Système.dehors.println (objet2.nom + "" + objet2.âge);
objet2.âge = 24;
Système.dehors.println ("\ nafter Modifier les valeurs:");
Système.dehors.println (objet1.nom + "" + objet1.âge);
Système.dehors.println (objet2.nom + "" + objet2.âge);
Selon ce code:
- Créez les objets de classe à l'aide du «nouveau»Mot-clé et«Profil()”Constructeur, respectivement.
- L'ancien objet correspond au constructeur de première classe comprenant les valeurs déclarées.
- Ce dernier objet créé fait référence au constructeur de copie.
- Maintenant, affichez les valeurs de l'objet une par une.
- À ce stade, les deux valeurs d'objet affichent des valeurs identiques puisque l'ancien objet est enveloppé comme l'argument du constructeur (copié).
- Dans l'étape suivante, allouer une nouvelle valeur à ce dernier objet.
- Enfin, affichez les valeurs d'objet mises à jour après allocation.
Code entier
Profil de classe
Nom de chaîne;
en âge;
Profil (nom de chaîne, Int Age)
ce.name = name;
ce.âge = âge;
Profil (profil ob)
Système.dehors.println ("Copier Constructeur invoqué!");
ce.nom = ob.nom;
ce.âge = ob.âge;
Copycstructor de classe publique
public static void main (String args [])
Profil object1 = nouveau profil ("Harry", 18);
Profil object2 = nouveau profil (object1);
Système.dehors.println ("\ nBefore Modification des valeurs:");
Système.dehors.println (objet1.nom + "" + objet1.âge);
Système.dehors.println (objet2.nom + "" + objet2.âge);
objet2.âge = 24;
Système.dehors.println ("\ nafter Modifier les valeurs:");
Système.dehors.println (objet1.nom + "" + objet1.âge);
Système.dehors.println (objet2.nom + "" + objet2.âge);
Sortir
Dans cette sortie, il peut être analysé que les valeurs d'objets allouées sont enveloppées dans le constructeur de copie de manière appropriée.
Avant de passer à l'exemple suivant, assurez-vous d'inclure le package suivant pour activer l'entrée utilisateur:
Importer Java.user.Scanner;
Exemple 2: Application d'un «constructeur de copie» pour copier les valeurs d'objet «Entrée utilisateur» dans Java
Dans cet exemple, le «Copier le constructeur«Peut être appliqué pour copier les valeurs de l'objet d'entrée utilisateur en accumulant l'objet de classe déjà créé comme argument constructeur de ce dernier objet:
classprofiledata
Nom de chaîne; en âge;
ProfileData (nom de la chaîne, Int Age)
ce.name = name;
ce.âge = âge;
Profiledata (profilata ob)
Système.dehors.println ("Copier Constructeur invoqué!");
ce.nom = ob.nom; ce.âge = ob.âge;
voidShow ()
Système.dehors.println ("Le nom est:" + ceci.nom);
Système.dehors.println ("L'âge est:" + ceci.âge);
publicClassCopyconstructor2
publicStaticVoidMain (String args [])
Objet de scanner = nouveau scanner (système.dans);
Système.dehors.println ("Entrez le nom:");
Nom de chaîne = objet.NextLine ();
Système.dehors.println ("Entrez l'âge:");
int age = objet.NextInt ();
Profilata object1 = new Profilata (nom, âge);
objet1.montrer();
ProfileData object2 = new Profilata (object1);
objet2.montrer(); objet.fermer();
Appliquez les étapes suivantes, comme prévu dans les lignes de code ci-dessus:
- Rappelez-vous les approches discutées pour définir une classe et y compris le constructeur et le constructeur de copie, respectivement.
- Après cela, définissez la fonction nommée «montrer()”Pour afficher les valeurs d'objet passé.
- Dans le "principal()«Méthode, créez un«Scanner"Objet utilisant le"nouveau»Mot-clé et«Scanner()”Constructeur, respectivement.
- Le "Système.dans«Le paramètre lit l'entrée de l'utilisateur,«Nextline ()" et le "NextInt ()«Les méthodes garantissent que la saisie de l'utilisateur comme«Chaîne", et "Entier", respectivement.
- Maintenant, créez un objet de classe nommé "objet1«Via l'approche discutée et transmettez les valeurs d'entrée de l'utilisateur comme arguments. Affichez également ces valeurs via la fonction de classe invoquée "montrer()".
- Dans l'étape suivante, créez un autre objet de classe et transmettez l'ancien objet comme l'argument du constructeur de copie de telle sorte que les valeurs d'entrée de l'utilisateur s'accumulent auparavant dans cet objet.
- Enfin, affichez les valeurs à l'aide de la fonction consultée "montrer()"Et fermez le"Scanner"Avec l'aide des associés"fermer()" méthode.
Sortir
Le résultat ci-dessus signifie que le constructeur de copie est invoqué et que les valeurs d'objet sont accumulées en conséquence.
Conclusion
Le "Copier le constructeur«En Java correspond à un constructeur qui crée / fait un objet en l'initialisant avec l'objet de classe même / identique, créé avant. Ce constructeur fonctionne tel que l'objet déjà créé est enveloppé comme son argument. Ce blog a guidé et mis en œuvre le «Copier le constructeur"En Java.