Som C++, Java støtter også kopi konstruktør . Men i C++ den er opprettet som standard. Mens vi i Java definerer kopikonstruktøren vår egen. I denne delen vil vi lære kopier konstruktør i Java med et eksempel .
Konstruktør
I Java, en konstruktør er det samme som en metode, men den eneste forskjellen er at konstruktøren har samme navn som klassenavnet. Den brukes til å lage en forekomst av klassen. Det kalles automatisk når vi lager et objekt i klassen. Den har ingen returtype. Husk at en konstruktør ikke kan være det abstrakt , endelig , synkronisert , og statisk . Vi kan ikke overstyre en konstruktør. Den tar litt plass i minnet når den kalles.
annet hvis java
Typer konstruktører
- Standard konstruktør
- Parameterisert konstruktør
Bortsett fra de to ovennevnte konstruktørene, støtter Java også kopikonstruktøren. La oss diskutere det i detalj.
Hvorfor kreves kopikonstruktør?
Noen ganger står vi overfor et problem der vi må lage en eksakt kopi av et eksisterende objekt i klassen. Det er også en betingelse, hvis vi har gjort noen endringer i kopien skal den ikke gjenspeile i den originale og omvendt. For slike tilfeller gir Java konseptet en kopi konstruktør .
Kopier Konstruktør
I Java er en kopikonstruktør en spesiell type konstruktør som lager et objekt ved å bruke et annet objekt av samme Java-klasse. Den returnerer en duplikatkopi av et eksisterende objekt i klassen.
Vi kan tilordne en verdi til det endelige feltet, men det samme kan ikke gjøres mens du bruker klone()-metoden. Den brukes hvis vi ønsker å lage en dyp kopi av et eksisterende objekt. Det er lettere å implementere sammenlignet med klone()-metoden.
Merk: Det kan ikke arves av underklassene. Hvis vi prøver å initialisere et underordnet klasseobjekt fra en overordnet klassereferanse, står vi overfor casting-problemet når vi kloner det med kopikonstruktøren.
Bruk av Copy Constructor
Vi kan bruke kopikonstruktøren hvis vi vil:
- Lag en kopi av et objekt som har flere felt.
- Generer en dyp kopi av de tunge gjenstandene.
- Unngå bruk av Object.clone()-metoden.
Fordeler med Copy Constructor
- Hvis et felt erklæres som endelig, kan kopikonstruktøren endre det.
- Det er ikke behov for typecasting.
- Bruken er enklere hvis et objekt har flere felt.
- Det er enkelt å legge til felt i klassen. Vi trenger bare å endre i kopikonstruktøren.
Opprette en kopikonstruktør
For å lage en kopikonstruktør i Java, følg trinnene nedenfor:
- Lag en konstruktør som godtar et objekt av samme klasse som en parameter.
public class Fruits { private double price; private String name; //copy constructor public Fruits(Fruits fruits) { //getters } }
- Kopier hvert felt (variabelt) objekt inn i den nyopprettede forekomsten.
public class Fruits { private double price; private String name; //copy constructor public Fruits(Fruits fruits) { //copying each filed this.price = fruits.price; //getter this.name = fruits.name; //getter } }
Eksempel på Copy Constructor
CopyConstructorExample.java
lokal dato
public class Fruit { private double fprice; private String fname; //constructor to initialize roll number and name of the student Fruit(double fPrice, String fName) { fprice = fPrice; fname = fName; } //creating a copy constructor Fruit(Fruit fruit) { System.out.println(' After invoking the Copy Constructor: '); fprice = fruit.fprice; fname = fruit.fname; } //creating a method that returns the price of the fruit double showPrice() { return fprice; } //creating a method that returns the name of the fruit String showName() { return fname; } //class to create student object and print roll number and name of the student public static void main(String args[]) { Fruit f1 = new Fruit(399, 'Ruby Roman Grapes'); System.out.println('Name of the first fruit: '+ f1.showName()); System.out.println('Price of the first fruit: '+ f1.showPrice()); //passing the parameters to the copy constructor Fruit f2 = new Fruit(f1); System.out.println('Name of the second fruit: '+ f2.showName()); System.out.println('Price of the second fruit: '+ f2.showPrice()); } }
Produksjon:
Name of the first fruit: Ruby Roman Grapes Price of the first fruit: 399.0 After invoking the Copy Constructor: Name of the second fruit: Ruby Roman Grapes Price of the second fruit: 399.0
Kopier Constructor vs clone()-metoden
Både kopikonstruktøren og clone()-metoden brukes til å lage en kopi av et eksisterende objekt i klassen. Men bruken av kopikonstruktør er enklere og bedre sammenlignet med klone()-metoden på grunn av grunnene gitt nedenfor:
- Hvis vi bruker klone()-metoden er det nødvendig å importere Klonbar Metoden kan gi unntak CloneNotSupportException. Så å håndtere unntaket i et program er en kompleks oppgave. Mens du er i kopikonstruktør er det ingen slike kompleksiteter.
- Vi kan ikke tilordne en verdi hvis feltene er det endelig . Mens vi er i kopikonstruktøren, kan vi tilordne verdier til de siste feltene.
- Objektet som returneres av metoden clone() må være typecast . Mens du er i kopikonstruktør er det ikke noe slikt krav.