Eksempel 1:
Før vi fortsetter med kopikonstruktørdemonstrasjonen, har vi arbeidet med standardkonstruktøren i Java. Standard konstruktører er de konstruktørene som ikke tar noen parametere. La oss ha standardkonstruktørprogrammet i følgende:
Public Class StandardConstVi definerer et program som begynner med byggingen av "StandardConst" Java -klassen. "StandardConst" -klassen er ytterligere definert med konstruktøren som har tittelen den samme som navnet på Java -klassen. Her oppretter vi denne konstruktøren som er tom, men inneholder en utskriftsuttalelse i konstruktørblokken. Deretter distribuerer vi klassen Main () -metoden der denne klassen heter. For dette erklærer vi “D” -objektet og bruker standardkonst () der. Derfra blir standardkonst () utført.
Standardkonstruktøren har ikke gitt en parameter, men utskriftserklæringen utføres ved å lage objektet i Main () -metoden.
Eksempel 2:
Demonstrasjonen av konstruktøren oppnås i det tidligere eksemplet. Nå er det et eksempel på Copy Constructor. Java Copy -konstruktørene tar et nåværende objekt som inngang og produserer en kopi av det definerte objektet.
KlassekompleksnummerVi har et tidligere program der vi lager "ComplexNumber" -klassen til Java. "ComplexNumber" -klassen inneholder attributter som er erklært som "ekte" og "IMG". Etter det definerer vi en konstruktør i "ComplexNumber" -klassen der klasseattributtene blir bestått som argumenter. Deretter bruker vi "dette" nøkkelordet for å referere til gjeldende objekter, "ekte" og "img". Etter det bruker vi “ComplexNumber ()” Copy Constructor som har et parametrisk “CN” -objekt av “ComplexNumber” -klassen. Konstruktøren er erklært med objektene i klassen. Verdiene for forekomstvariablene initialiseres med de fra det mottatte objektet.
Deretter utfører vi en toString () overstyring av operasjonen på "ekte" og "IMG" klasseobjekter. Hovedklassen "ComplexNumber" er implementert med Main () -metoden. Her oppretter vi “CN1” -objektet for å påkalle ComplexNumber () -klassen. Vi setter verdiene for de "virkelige" og "IMG" -variablene i ComplexNumber () -klassen. Etter dette erklærer vi “CN2” -objektet der kopikonstruktøren er involvert da “CN2” blir passert inne i den. Deretter erklærer vi et annet “CN3” -objekt for å referere til “CN2” -objektet. Til slutt kaller vi ToString () -metoden til “CN2” -objektet for å skrive ut verdiene.
Det komplekse antallet virkelige og imaginære verdier for både det eksisterende objektet og det kopierte objektet er det samme. Kopikonstruktøren påvirker ikke den opprinnelige datoen for objektene.
Eksempel 3:
Kopikonstruktøren brukes nettopp til å lage en duplikat kopi av de eksisterende variablene i klassen. Nå er kopikonstruktøren opprettet for refererte typeklasser. Gjennom kopikonstruktøren kan vi legge til attributtene til en klasse i en annen klasse.
klasseansattProgrammet er etablert med "ansatt" Java -klassen, og vi setter de private attributtene til klassen. Disse attributtene inkluderer String Ename, Double Type Esalary og Adresse EADDRESS. Deretter konstruerer vi den parameteriserte konstruktøren av "ansatt" -klassen som tar de eksisterende klasseattributtene som parameterobjekter. I den parameteriserte konstruktøren kaller vi k “dette” nøkkelordet som refererer til gjeldende forekomst direkte.
Deretter definerer vi en kopikonstruktør som tar "EMP" -parameteren for å referere til gjenstanden for "ansattes" -klassen. Vi spesifiserer getter -metodene for hvert av objektene. Etter det kaller vi hver av getter -metodene og settermetoder som kontrollerer verdien mot hvert referanseobjekt i klassen. Deretter lager vi et programs andre klasse som er "adresse" som har "postnummer" -medlemmet. Vi definerer også kopikonstruktøren i klassen som tar referansen til ansattes klasseobjekt "emp" av typen int. Postnummerobjektet til "Adresse" -klassen er satt med "EMP" -objektet.
Nå gir "EMP" -objektet i ansatteklassen og "postnummer" -objektet i adresseklassen de samme dataene. Deretter har vi en "Main" -klasse der Main () -metoden er distribuert for å tilordne verdiene til de gitte attributtene og utføre dem. Vi kaller adresse () -klassen i "EADD" -objektet og setter EADDress -verdien til den. Innenfor "EMP" -objektet blir også verdiene for de andre feltene i ansatteklassen initialisert. Videre erklærer vi et referanseobjekt “CloneOfEMP1” som peker på et “Emp1” -objekt som genereres av det nye nøkkelordet kalt “Ansatt” som bruker en kopikonstruktør for å kopiere dataene fra det første objektet.
Deretter endrer vi verdien av adressen som også påvirker "EADD" -klonobjektet. Utskriftsuttalelsen viser resultatene av å endre verdien av klonobjektet.
Adressen til Copy Constructor -objektet blir endret som vises på Java -ledeteksten:
Eksempel 4:
Det kopierte objektet kan også opprettes uten kopikonstruktøren ved å bare gi innholdet i det ene objektet til det andre. La oss klone klasseobjektene uten å bruke kopikonstruktøren.
Importer Java.util.Skanner;Programmet er definert med den "produkt" offentlige klasse der vi erklærer dets objekter som er PID, PNAME og PPRICE av en annen type. Etter det oppretter vi bare konstruktøren for den spesifiserte klassen uten argumenter. Deretter lager vi den parameteriserte konstruktøren av klassen der alle klasseattributtene er erklært som et argument. Inne i klassekonstruktøren bruker vi "denne" referansevariabelen med klasseattributtene som refererer til konstruktørens nåværende objekt.
Deretter har vi "ProductView" -funksjonsdefinisjonen av "Produkt" -klassen for å vise eller skrive ut verdiene til hver av klasseattributtene. Etter dette bruker vi Main () -metoden der vi bruker skannerklassen for å få verdiene for "produkt" -klasseattributtene for å danne brukeren. Når brukeren har lagt inn verdien av attributtet, vises de opprinnelige verdiene for klasseforekomsten fra ProductView () -funksjonen. Deretter oppretter vi "Product_Copy" -objektet der vi påkaller "Product ()" -klassen. Nå har produkt_kopien innholdet i produktklassen. Så vi kopierer attributtene til "produkt" -klassen med de nye objektene til Product_Copy. Både klasseattributtene og produkt_copy -attributtet har de samme verdiene.
Verdiene til det opprinnelige objektet og det kopierte objektet er de samme uten å bruke kopikonstruktøren.
Konklusjon
Kopikonstruktørene av Java er en effektiv og grei måte å duplisere objektene. De kan lage både grunne og dype kloner. Vi har gitt et kjørbart program for kopikonstruktørene der de forskjellige scenariene er oppnådd. Dessuten har kopikonstruktører ulempen med å bli arvet. Men vi kan komme oss rundt denne vanskeligheten ved å inkludere en metode som utløser kopikonstruktøren i basen og avledede klasser.