logo

Eksempel på Java Copy Constructor

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.