- - Java Eğitimi: Java'da Kopya Oluşturucu

Java Eğitimi: Java'da Kopya Oluşturucu

Önceki tartışmamızda, nesne referansını ilet bir yönteme. Aynı şekilde, aynı sınıftaki başka bir nesnenin örnek değişkenlerini başlatmak için referansı bir kurucuya aktarabiliriz. Yapıcıya gönderilen nesnenin örnek değişkenleri ile aynı değeri kullanabilirsiniz. Bir nesne diğer nesnelere kopyalanır. Bu Java Eğitimi Kopya Oluşturucu'yu Java dilinde inceleyelim.

Java'da Java Eğitimi Kopya Oluşturucu

  • Kopya Oluşturucu kullanmanın avantajları
  • Kopya Oluşturucu kullanmanın dezavantajları
  • Kopya Oluşturucu Programı
  • Java Kodu ve Çıktısının Açıklaması

Kopya Oluşturucu kullanmanın avantajları

Kopya Oluşturucularının Java'daki diğer kuruculara göre iyi çalıştığı birkaç kullanım durumu vardır.

Bildiğimiz gibi nesneler, clone () yöntemi kullanılarak Java'da klonlanabilir. Fakat clone () kullanarak nesne kopyalamak esnek ve genişletilebilir değildir, iyi çalışmıyor.

İlk sorun şu ki kurucu çağrısı yok nesne klonlanırken olur. Sonuç olarak, klon yönteminin yazarı olarak, tüm üyelerin uygun şekilde ayarlandığından emin olmak sizin sorumluluğunuzdadır. İşte işlerin yanlış gidebileceği bir örnek.

Toplamı takip eden bir sınıf düşününstatik int üyesi kullanarak bu türdeki nesnelerin sayısı. Yapıcılarda sayıyı artıracaksınız. Bununla birlikte, nesneyi klonlarsanız, hiçbir kurucu çağrılmadığından, sayı gerçekten nesne sayısını yansıtmaz!

Ayrıca, sınıfın son alanları varsa, bunlarklon yönteminde bir değer verilemez. Nesnenin son alanlarının doğru şekilde başlatılmasında sorunlara yol açar. Son alan nesnenin bazı dahili durumlarına atıfta bulunuyorsa, klonlanan nesne dahili durumu paylaşır ve bu kesinlikle değiştirilebilir nesneler için doğru değildir.

Java'da Copy Constructor kullanmanın dezavantajları

Bir nesne diğerinin kopyası olduğundan,birincisinde değişiklik, yanlışlıkla diğerinin örnek değişkenlerinin değerlerini değiştirecektir. Bu nedenle, kopya oluşturucuyu herkese açık olarak ilan etmemek için dikkatli ve daha iyi olmalısınız. Aksi takdirde, kalıtım sırasında, Açık-Kapalı Prensibi (OCP). OCP, Bertrand Meyer tarafından yazılım varlıkları uzantı için açık, ancak değişiklikler için kapalı olmalıdır.

Kopya Oluşturucu Programı

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

Çıktı

Java'da Java Eğitimi Kopya Oluşturucu

Java Kodu ve Çıktısının Açıklaması

Lütfen kırmızı ile işaretlenmiş kodu dikkatlice inceleyin,temel olarak, Employee sınıfında, kopya yapıcısının nasıl bildirileceği ile ilgili sözdizimini bulacaksınız. Çalışan 2 ve çalışan5 sırasıyla iki çalışan 2 ve çalışan3'ün bir kopyası olan iki nesne daha oluşturduk. Çıktıdan, worker4 öğesinin örnek değişkenlerinin, worker2 öğesinin örnek değişkenlerinin değerleri ile aynı değere sahip olduğu görülebilir. Aynı durum çalışanlar için de geçerlidir5.

Sonra, göreceğiz Java'da “statik” anahtar kelimesi nasıl kullanılır. Java programlama ile ilgili daha kullanışlı eğitimlere ve son yönergelere buradan göz atın.

Yorumlar