- - Tutorial Java: Constructor de copiere în Java

Tutorial Java: copiați constructorul în Java

În discuția noastră anterioară, am ajuns să știm cum să trece o referință de obiect la o metodă. În același mod, putem trece referința la un constructor pentru a inițializa variabilele de instanță ale unui alt obiect din aceeași clasă. Puteți utiliza aceeași valoare a variabilelor de instanță ale obiectului care este trimis constructorului. Un obiect este copiat în alte obiecte. Să consultăm acest constructor de copiere tutorial tutorial Java în limbaj Java.

Constructor de copiere Java tutorial în Java

  • Avantajele utilizării Copy Constructor
  • Dezavantaje ale utilizării Copy Constructor
  • Program pentru Copy Constructor
  • Explicația Codului și a ieșirii Java

Avantajele utilizării Copy Constructor

Există mai multe cazuri de utilizare în care Copy Constructors funcționează bine în raport cu alți constructori din Java.

După cum știm, obiectele pot fi clonate în Java folosind metoda clonă (). Dar copierea obiectului folosind clona () nu este flexibilă și extensibilă, nu funcționează bine.

Prima problemă este că nici un apel constructor se întâmplă atunci când obiectul este clonat. Drept urmare, este responsabilitatea dumneavoastră, ca scriitor al metodei clonă, să vă asigurați că toți membrii au fost stabiliți în mod corespunzător. Iată un exemplu în care lucrurile ar putea merge prost.

Luați în considerare o clasă care ține evidența totaluluinumărul de obiecte de acest tip, folosind un membru de int static. La constructori ai mări numărul. Cu toate acestea, dacă clonezi obiectul, deoarece nu este apelat niciun constructor, numărul nu va reflecta cu adevărat numărul de obiecte!

În plus, dacă clasa are câmpuri finale, acestea suntnu i se poate da o valoare în metoda clonă. Aceasta duce la probleme cu inițializarea corectă a ultimelor câmpuri ale obiectului. Dacă câmpul final se referă la o anumită stare internă a obiectului, atunci obiectul clonat ajunge să împartă starea internă, iar acest lucru sigur nu este corect pentru obiectele mutabile.

Dezavantaje ale utilizării Copy Constructor în Java

Întrucât un obiect este replica altuia, oricareschimbarea în prima, va modifica din neatenție valorile variabilelor de instanță ale celorlalte. Prin urmare, trebuie să fii atent și mai bine să nu declari constructor de copii drept public. În caz contrar, în timpul moștenirii, aceasta nu o satisface Principiul închis deschis (OCP). OCP, de Bertrand Meyer, afirmă că entitățile software ar trebui să fie deschise pentru extindere, dar închise pentru modificări.

Program pentru 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();
}
}

producție

Constructor de copiere Java tutorial în Java

Explicația Codului și a ieșirii Java

Vă rugăm să respectați cu atenție codul marcat cu roșu,practic, în clasa Angajat, veți găsi sintaxa despre modul de declarare a constructorului de copii. Am creat încă două obiecte angajat 4 și respectiv angajat5, care sunt o copie a angajat2 și respectiv angajat3. Din ieșire, este vizibil că variabilele de instanță ale angajatului4 au aceeași valoare ca și valorile variabilelor de instanță ale angajatului2. Același lucru este valabil și pentru angajat5.

În continuare, vom vedea cum se utilizează cuvântul cheie „static” în Java. Consultați aici mai multe tutoriale și ghiduri finale despre programarea Java.

Comentarii