I vår forrige diskusjon har vi lært hvordan vi skal gjøre det pass en objektreferanse til en metode. På samme måte kan vi gi referansen til en konstruktør for å initialisere forekomstvariablene til et annet objekt i samme klasse. Du kan bruke den samme verdien av forekomstvariablene til objektet som sendes til konstruktøren. Ett objekt blir kopiert til andre objekter. La oss sjekke ut denne Java Tutorial Copy Constructor på Java-språk.
Java Tutorial Copy Constructor i Java
- Fordeler med å bruke Copy Constructor
- Ulemper ved å bruke Copy Constructor
- Program for Copy Constructor
- Forklaring av Java-koden og output
Fordeler med å bruke Copy Constructor
Det er flere brukssaker der Copy Constructors fungerer bra i forhold til andre konstruktører i Java.
Som kjent kan objekter klones i Java ved å bruke klonen () -metoden. Men kopieringsobjekt ved hjelp av klon () er ikke fleksibelt og utvidbart, fungerer ikke bra.
Det første problemet er det ingen konstruktøranrop skjer når objektet klones. Som et resultat er det ditt ansvar som forfatter av klonemetoden å sørge for at alle medlemmene er satt riktig. Her er et eksempel på hvor ting kan gå galt.
Vurder en klasse som holder oversikt over totalenantall objekter av den typen ved bruk av et statisk int-medlem. I konstruktørene ville du øke tellingen. Imidlertid, hvis du kloner objektet, siden ingen konstruktør kalles, vil antallet ikke virkelig gjenspeile antallet objekter!
Videre, hvis klassen har endelige felt, dissekan ikke gis en verdi i klonemetoden. Det fører til problemer med å initialisere objektets siste felt riktig. Hvis det endelige feltet viser til en eller annen intern tilstand for objektet, ender det klonede objektet med å dele den interne tilstanden, og dette er sikkert ikke riktig for mutbare objekter.
Ulemper ved å bruke Copy Constructor i Java
Ett objekt er kopien til en annen, hvilken som helstendring i den første den vil utilsiktet endre verdiene til forekomstvariablene til andre. Så du må være forsiktig og bedre for ikke å erklære kopibygger som offentlig. Ellers tilfredsstiller det ikke under arven Åpen lukket prinsipp (OCP). OCP, av Bertrand Meyer, uttaler det programvareenheter skal være åpne for utvidelse, men stengt for endringer.
Program for Copy Constructor
class Employee{ String employeeName; String address; int age; double salary; /*Default Constructor */ Employee(){ employeeName = "Platini"; address = "France"; age = 45; salary = 120500.92; } /* Parameterized Constructor */ Employee(String empName,String addr,int ag,double sal){ employeeName = empName; address = addr; age = ag; salary = sal; } /* Copy Constructor */ Employee(Employee emp){ employeeName = emp.employeeName; address = emp.address; age = emp.age; salary = emp.salary; } void showDetails(){ System.out.println("Employee's Name: "+employeeName); System.out.println("Employee's Address: "+address); System.out.println("Employee's Age: "+age); System.out.println("Employee's Salary: "+salary); } } class ConstructorDemo{ public static void main(String args[]){ System.out.println("Employee Details"); System.out.println("----------------"); Employee employee1 = new Employee(); employee1.showDetails(); System.out.println("----------------"); String employeeName = "John"; String address = "Los Angles"; int age = 25; double salary = 34503.92; Employee employee2 = new Employee(employeeName,address,age,salary); employee2.showDetails(); System.out.println("----------------"); Employee employee3 = new Employee(); employee3.showDetails(); System.out.println("----------------"); Employee employee4 = new Employee(employee2); employee4.showDetails(); System.out.println("----------------"); Employee employee5 = new Employee(employee3); employee5.showDetails(); } }
Produksjon
Forklaring av Java-koden og output
Vennligst følg koden merket med rødt,I arbeidstakerklassen vil du i utgangspunktet finne syntaks for hvordan du kan erklære kopikonstruktør. Vi har laget ytterligere to objekter ansatt 4 og ansatt5 som er en kopi av henholdsvis ansatt2 og ansatt3. Fra utgangen er det synlig at forekomstvariabler for medarbeider4 har samme verdi som verdiene på forekomstvariabler til medarbeider2. Det samme er tilfelle for ansatt5.
Neste, vi får se hvordan bruke nøkkelordet “statisk” i Java. Ta en titt på mer nyttige opplæringsprogrammer og endelige retningslinjer for Java-programmering her.
kommentarer