- - Java Tutorial: Copy Constructor v Javě

Výukový program Java: Copy Constructor in Java

V předchozí diskusi jsme se dozvěděli, jak na to předat odkaz na objekt metodě. Stejným způsobem můžeme předat odkaz konstruktoru k inicializaci proměnných instance jiného objektu stejné třídy. Můžete použít stejnou hodnotu proměnných instance objektu, který je odeslán konstruktoru. Jeden objekt je zkopírován do jiných objektů. Pojďme se podívat na tento Java tutorial Copy Constructor v jazyce Java.

Java tutorial Copy Constructor v Javě

  • Výhody použití Copy Constructor
  • Nevýhody použití Copy Constructor
  • Program pro kopírování Constructor
  • Vysvětlení kódu a výstupu Java

Výhody použití Copy Constructor

Existuje několik případů použití, kdy Copy Constructors funguje dobře s ohledem na ostatní konstruktéry v Javě.

Jak víme, objekty lze klonovat v Javě pomocí metody clone (). Ale kopírování objektu pomocí clone () není flexibilní a rozšiřitelné, nefunguje to také dobře.

Prvním problémem je to žádné volání konstruktoru se stane, když je objekt klonován. Výsledkem je, že jako autor metody klonování je vaší odpovědností zajistit, aby všichni členové byli náležitě nastaveni. Zde je příklad, kde by se věci mohly pokazit.

Zvažte třídu sledující celkový početpočet objektů tohoto typu pomocí statického int člena. V konstruktorech byste zvýšili počet. Pokud však klonujete objekt, protože není volán žádný konstruktor, počet nebude skutečně odrážet počet objektů!

Dále, pokud má třída konečná pole, tatonelze v klonovací metodě přiřadit hodnotu. To vede k problémům s řádnou inicializací posledních polí objektu. Pokud konečné pole odkazuje na nějaký vnitřní stav objektu, pak klonovaný objekt skončí sdílení vnitřního stavu a to jistě není správné pro proměnné objekty.

Nevýhody použití Copy Constructor v Javě

Jako jeden objekt je replika jinéhozměna v první z nich neúmyslně změní hodnoty proměnných instance ostatních. Musíte tedy být opatrní a lepší, abyste konstruktéra kopií neprohlásili za veřejný. Jinak při dědictví nevyhovuje Princip otevřeného uzavření (OCP). OCP, Bertrand Meyer, to uvádí softwarové entity by měly být otevřené pro rozšíření, ale pro modifikace uzavřené.

Program pro kopírování 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();
}
}

Výstup

Java tutorial Copy Constructor v Javě

Vysvětlení kódu a výstupu Java

Pečlivě dodržujte kód označený červeně,v podstatě ve třídě Employee najdete syntaxi, jak deklarovat konstruktéra kopií. Vytvořili jsme dva další objekty zaměstnanec 4 a zaměstnanec5, které jsou kopií zaměstnance2 respektive zaměstnance3. Z výstupu je vidět, že proměnné instance zaměstnance4 mají stejnou hodnotu jako hodnoty proměnných instance zaměstnance2. Totéž platí pro zaměstnance5.

Dále uvidíme jak používat klíčové slovo „static“ v Javě. Podívejte se na další užitečné návody a konečné pokyny pro programování Java zde.

Komentáře