una nota: so che per costruttore di copia tu intendi uno che partendo da una istanza di Libro ne crea un'altra, ma in il concetto di "costruttore di copia" è più del C++ che di Java e nella definizione di gerarchie di classi può confondere. Oltretutto trovo alquanto pericoloso mettere nel costruttore della classe padre un riferimento alla classe figlia (al max lo terrei della classe padre).Originariamente inviato da franksisca
ovviamente nel primo caso devi avere il costruttore di copia nella classe madre
In Java quello che a mio parere più si avvicina al concetto di costruttore di copia (inteso come colui che crea una copia dell'istanza corrente) è clone, spero di essermi spiegata su quello che voglio dire e che non ti offendi.
@roby492
Quando definisco le gerarchie di classi di solito seguo una mia piccola regola: cosa serve alla classe più esterna per poter avere una consistenza logica?
Individuati quei parametri, fissi dalla classe padre il costruttore (o meglio la sua signature) desiderato. Quelle sono le info minime che devo sempre fornire. Posso averne altre, nulla lo vieta, ma quello è il minimo indispensabile e non posso istanziare un oggetto di quel tipo senza specificare quelle informazioni.
Le figlie devono rispettare la signature fissata, riproponendola e soprattutto chiamando il costruttore della classe padre come ti ha fatto vedere franksisca.
Ricorda che puoi sempre definire costruttori con più parametri e anche con meno parametri, ricordando però di assegnare dei default per i parametri che non ti vengono forniti dal costruttore.
Ricorda anche che la chiamata a super è la prima che deve essere fatta

Rispondi quotando