2016-04-09 8 views
1

Giriş seviyesi java için bazı ödevler üzerinde çalışıyorum ve buna koştum. Bana ne yaptığını bilmiyorum. Bu tam anlamıyla "Date" "Date d"'daki değere eşit mi ayarlanıyor? ya da bir şey mi eksik? Tek bir satır kod için o kadar uzun bir açıklama kullanılacak gibi hissetmiyorum.Verileri kopyalamayı anlama

Birisi burada neler olup bittiğini ve neyi özlediğimi açıklayabilir mi?

kopyalama yapıcı Bu tipi tarihi bir parametre kabul eder ve daha sonra alıcı ayarlar (veya yürütme) örneğe parametre nesnesinin kişilerce eşit değişkenleri nesneleri bir kurucu.

public Date(Date d) 

cevap

0

yapmanız gereken tek şey d tüm alanları almak ve yeni tarihi kopylayın geçerli: Sonuç alıcı nesne biçimsel parametre nesnenin bir kopyası olmasıdır. Dolayısıyla, bir Tarihin bir günü, bir günü, bir ayı ve bir yılı varsa, tüm bunları yeni Tarihe kopyalayın. Bu kadar.

+0

bu yüzden, eğer doğru anlıyorsam, tek yapmam gereken tarihi çekmek için bir accesor kullanmak ve onu çeker mi? –

+0

@JWelch evet, bir Date nesnesindeki tek alan tarih ise. Birden fazla alan varsa, her birini çekmek için bir accesor kullanmanız ve yeni nesneyi her biri için uygun şekilde ayarlamanız gerekir. – nhouser9

+0

harika. teşekkürler nhouser9, bu benim sorunumu çözer. –

0
class Complex { 

private double re, im; 

// A normal parametrized constructor 
public Complex(double re, double im) { 
    this.re = re; 
    this.im = im; 
} 

// copy constructor 
Complex(Complex c) { 
    System.out.println("Copy constructor called"); 
    re = c.re; 
    im = c.im; 
} 

// Overriding the toString of Object class 
@Override 
public String toString() { 
    return "(" + re + " + " + im + "i)"; 
    } 
} 

public class Main { 

public static void main(String[] args) { 
    Complex c1 = new Complex(10, 15); 

    // Following involves a copy constructor call 
    Complex c2 = new Complex(c1); 

    // Note that following doesn't involve a copy constructor call as 
    // non-primitive variables are just references. 
    Complex c3 = c2; 

    System.out.println(c2); // toString() of c2 is called here 
    } 
}