- - Java bemutató: Másolókészítő Java-ban

Java bemutató: Másolókészítő Java-ban

Az előző beszélgetésünk során megtudtuk, hogyan kell átadni egy objektum referenciát egy módszerhez. Ugyanezen módon átadhatjuk a hivatkozást egy konstruktornak, hogy inicializáljuk az azonos osztályba tartozó másik objektum példányváltozóit. Használhatja ugyanazt az objektum példányváltozóinak az értékét, amelyet az építőnek küldenek. Az egyik objektum másolásra kerül más objektumokra. Nézzük meg ezt a Java oktatóanyag másolókészítőt Java nyelven.

Java oktatóanyag másolókészítő Java-ban

  • A Copy Constructor használatának előnyei
  • A Copy Constructor használatának hátrányai
  • Program Copy Constructor számára
  • A Java kód és kimenet magyarázata

A Copy Constructor használatának előnyei

Számos olyan eset fordul elő, ahol a Copy Constructors jól működik a Java többi konstruktorához képest.

Mint tudjuk, az objektumokat klónozhatjuk a Java-ban a clone () módszerrel. De az objektum másolása a klón () segítségével nem rugalmas és bővíthető, szintén nem működik jól.

Az első probléma az nincs kivitelező hívás akkor történik, amikor az objektumot klónozzák. Ennek eredményeként a klónozási módszer írójának felelőssége, hogy minden tagját megfelelően beállítsák. Íme egy példa arra, ahol a dolgok rosszra fordulhatnak.

Fontolja meg, hogy egy osztály nyomon követi-e az összegetaz ilyen típusú objektumok száma statikus int tag használatával. A kivitelezőknél növelné a számot. Ha azonban az objektumot klónozza, mivel nem hívnak kivitelezőt, akkor a szám nem tükrözi valóban az objektumok számát!

Továbbá, ha az osztálynak végső mezői vannak, akkor ezeknem lehet értéket adni a klón módszernél. Ez problémákat okoz az objektum utolsó mezőinek megfelelő inicializálásával. Ha a végleges mező az objektum valamilyen belső állapotára utal, akkor a klónozott objektum megosztja a belső állapotot, és ez bizonyosan nem helyes a módosítható objektumok esetében.

A Copy Constructor Java használatának hátrányai

Mivel az egyik objektum a másik másolata, bármelyikha az első megváltozik, akkor véletlenül megváltoztatja más példányváltozóinak értékeit. Tehát legyen óvatos és jobb, ha nem nyilvánítja nyilvánosságra a másoló-kivitelezőt. Egyébként az öröklés során nem felel meg a Nyílt-zárt elv (OCP). Az OCP, Bertrand Meyer szerint, ezt állítja A szoftver entitásnak nyitva kell lennie a kiterjesztéshez, de a módosításokhoz zárva kell lennie.

Program Copy Constructor számára

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

Kimenet

Java oktatóanyag másolókészítő Java-ban

A Java kód és kimenet magyarázata

Figyelmesen figyelje meg a vörös színű kódot,alapvetően a Munkavállalói osztályban megtalálhatja a másolatkészítő deklarálásának szintaxisát. Készítettünk még két objektumot, a 4. alkalmazottat és az 5. alkalmazottat, amelyek a 2. alkalmazott és a 3. munkavállaló példányai. A kimenetből látható, hogy az alkalmazott4 példányváltozói megegyeznek az értékkel, mint a munkavállaló2 példányváltozói. Ugyanez vonatkozik a munkavállalóra5.

Ezután meglátjuk hogyan kell használni a „statikus” kulcsszót a Java-ban. Itt talál további hasznos oktatóanyagokat és a Java programozásra vonatkozó végső útmutatásokat.

Hozzászólások