Hva er en kopikonstruktør i Java

Hva er en kopikonstruktør i Java
I Java kan det være tilfeller der utvikleren trenger å omfordele verdiene i henhold til kravene. For eksempel holder oppdateringen av konstruktøroppføringene fra tid til annen koden intakt. I slike tilfeller "Kopier konstruktør”I Java blir nyttig for å endre kodefunksjonalitetene i samsvar med de gitte kravene.

Denne artikkelen vil diskutere bruken av "Copy Constructor" ved hjelp av Java.

Hva er en "kopikonstruktør" i Java?

Kopier konstruktør”Tilsvarer en konstruktør som oppretter/lager et objekt ved å initialisere det med det identiske klasseobjektet, opprettet før. For å lage en kopikonstruktør blir det eksisterende klasseobjektet plassert som et argument, og verdiene for forekomstvariabler initialiseres med verdiene som er akkumulert i objektet.

Eksempel 1: Bruker en "kopikonstruktør" for å kopiere "tildelte" objektverdier i Java

Dette eksemplet bruker "Kopier konstruktør”For å kopiere de tildelte objektverdiene fra et annet opprettet objekt ved å pakke det tildelte objektet som argument:

ClassProfile
Strengnavn;
int alder;
Profil (strengnavn, int alder)
dette.Navn = navn;
dette.alder = alder;

Profil (profil OB)
System.ute.Println ("Copy Constructor påkalt!");
dette.Navn = ob.Navn;
dette.Alder = ob.alder;

I klassekoden ovenfor, bruk følgende trinn:

  • Først av alt, definere en klasse som heter “Profil”.
  • I sin definisjon, spesifiser de medfølgende variablene.
  • Etter det, inkluderer klassekonstruktøren som består av de angitte parametrene som er identiske med de spesifiserte.
  • I konstruktørdefinisjonen, se de spesifiserte variablene via “dette”Og tilordne dem de passerte argumentene.
  • Lag nå en kopikonstruktør som har den oppgitte parameteren.
  • Merk:ob”I Copy Constructor peker på det opprettede klasseobjektet.
  • I sin definisjon, på samme måte, se de spesifiserte variablene og tilordne dem de allerede tildelte verdiene via det passerte objektet.

La oss nå gå videre til følgende kodelinjer:

offentlig klasse copyconstructor
public static void main (String args [])
Profilobjekt1 = ny profil ("Harry", 18);
Profilobjekt2 = ny profil (objekt1);
System.ute.println ("\ n før modifiserende verdier:");
System.ute.println (objekt1.Navn + "" + Object1.alder);
System.ute.Println (Object2.Navn + "" + Object2.alder);
Objekt2.alder = 24;
System.ute.println ("\ nafter modifiserende verdier:");
System.ute.println (objekt1.Navn + "" + Object1.alder);
System.ute.Println (Object2.Navn + "" + Object2.alder);

I henhold til denne koden:

  • Lag klasseobjektene ved å bruke “ny”Nøkkelord og“Profil()Henholdsvis konstruktør.
  • Det tidligere objektet tilsvarer førsteklassekonstruktøren som omfatter de angitte verdiene.
  • Sistnevnte opprettet objekt refererer til kopikonstruktøren.
  • Vis nå objektverdiene en etter en.
  • På dette tidspunktet viser begge objektverdiene identiske verdier siden det tidligere objektet er pakket inn som sistnevnte (kopierte) konstruktørargumentet.
  • I neste trinn, tildel en ny verdi til sistnevnte objekt.
  • Til slutt, vis de oppdaterte objektverdiene etter tildeling.

Hele koden

Klasseprofil
Strengnavn;
int alder;
Profil (strengnavn, int alder)
dette.Navn = navn;
dette.alder = alder;

Profil (profil OB)
System.ute.Println ("Copy Constructor påkalt!");
dette.Navn = ob.Navn;
dette.Alder = ob.alder;
offentlig klasse copyconstructor
public static void main (String args [])
Profilobjekt1 = ny profil ("Harry", 18);
Profilobjekt2 = ny profil (objekt1);
System.ute.println ("\ n før modifiserende verdier:");
System.ute.println (objekt1.Navn + "" + Object1.alder);
System.ute.Println (Object2.Navn + "" + Object2.alder);
Objekt2.alder = 24;
System.ute.println ("\ nafter modifiserende verdier:");
System.ute.println (objekt1.Navn + "" + Object1.alder);
System.ute.Println (Object2.Navn + "" + Object2.alder);

Produksjon

I denne utgangen kan det analyseres at de tildelte objektverdiene er pakket inn i kopikonstruktøren på riktig måte.

Før du fortsetter til neste eksempel, må du huske å inkludere følgende pakke for å aktivere brukerinngang:

Importer Java.util.Skanner;

Eksempel 2: Bruker en "kopikonstruktør" for å kopiere "brukerinngang" -objektverdiene i Java

I dette eksemplet "Kopier konstruktør”Kan brukes for å kopiere brukerens inndataobjektverdier ved å akkumulere det allerede opprettede klasseobjektet som sistnevnte objekts konstruktørargument:

classProfiledata
Strengnavn; int alder;
Profiledata (strengnavn, int alder)
dette.Navn = navn;
dette.alder = alder;
Profiledata (Profiledata ob)
System.ute.Println ("Copy Constructor påkalt!");
dette.Navn = ob.Navn; dette.Alder = ob.alder;
voidShow ()
System.ute.println ("Navnet er:"+dette.Navn);
System.ute.println ("Alderen er:"+dette.alder);
publicClassCopyconstructor2
publicStaticVoidmain (String Args [])
Skannerobjekt = ny skanner (system.i);
System.ute.println ("Skriv inn navnet:");
Strengnavn = objekt.NextLine ();
System.ute.Println ("Enter The Age:");
int alder = objekt.nextInt ();
Profiledata Object1 = new Profiledata (navn, alder);
Objekt1.forestilling();
Profiledata Object2 = ny Profiledata (Object1);
Objekt2.forestilling(); gjenstand.Lukk();

Bruk følgende trinn, som gitt i kodelinjene ovenfor:

  • Husk de diskuterte tilnærmingene til å definere en klasse og inkludere henholdsvis konstruktøren og kopikonstruktøren.
  • Etter det, definer funksjonen som heter “forestilling()”For å vise de passerte objektverdiene.
  • I “hoved()”Metode, lag en“Skanner”Objekt ved å bruke“ny”Nøkkelord og“Skanner ()Henholdsvis konstruktør.
  • System.i”Parameter leser brukerinngang,”Nextline ()" og "NextInt ()”Metoder sikrer brukerinngangen som“Streng”, Og“Heltall”, Henholdsvis.
  • Lag nå et klasseobjekt som heter “Objekt1”Via den diskuterte tilnærmingen og passerer brukerinngangsverdiene som argumenter. Vis også disse verdiene via den påkalte klassefunksjonen "forestilling()”.
  • I neste trinn, lag et annet klasseobjekt og pass det tidligere objektet som kopikonstruktørens argument slik at brukerinngangsverdiene tidligere blir akkumulert i dette objektet.
  • Til slutt kan du vise verdiene ved å bruke den tilgjengelige funksjonen "forestilling()”Og lukk“Skanner”Ved hjelp av den tilknyttede”Lukk()”Metode.

Produksjon

Ovennevnte utfall betyr at kopikonstruktøren blir påberopt og objektverdiene akkumuleres deretter.

Konklusjon

Kopier konstruktør”I Java tilsvarer en konstruktør som oppretter/lager et objekt ved å initialisere det med samme/identiske klasseobjekt, opprettet før. Denne konstruktøren fungerer slik at det allerede opprettede objektet er pakket inn som argument. Denne bloggen ledet og implementerte “Kopier konstruktør”I Java.