esatto, hai capito bene.
Tu in fase di progettazione non sai se mai avrai delle figlie e quali saranno, quindi se proprio vuoi "clonarti" in qualche modo metti un riferimento della classe padre. In quel caso il costruttore della classe padre partirà da un oggetto che di sicuro conosce, dello stesso tipo di se stesso per intenderci.
Provo a chiarirmi con un esempio:
Codice PHP:
package sample;
public class TestoA extends Testo{
private String altroParametro = "";
public TestoA(String autore, String titolo) {
this(autore, titolo, "");
}
public TestoA(Testo testo) {
this (testo.getAutore(), testo.getTitolo(), "");
}
public TestoA(Testo testo, String altroParametro) {
this (testo.getAutore(), testo.getTitolo(), altroParametro);
}
public TestoA(String autore, String titolo, String altroParametro) {
super(autore, titolo);
this.altroParametro = altroParametro;
}
@Override
public String toString() {
return "TestoA [altroParametro=" + altroParametro + ", getAutore()="
+ getAutore() + ", getTitolo()=" + getTitolo() + "]";
}
public String getAltroParametro() {
return altroParametro;
}
public void setAltroParametro(String altroParametro) {
this.altroParametro = altroParametro;
}
}
package sample;
public class Testo {
private String autore;
private String titolo;
public Testo(String autore, String titolo) {
this.autore = autore;
this.titolo = titolo;
}
public Testo(Testo testo) {
this(testo.getAutore(), testo.getTitolo());
}
public String getAutore() {
return autore;
}
public void setAutore(String autore) {
this.autore = autore;
}
public String getTitolo() {
return titolo;
}
public void setTitolo(String titolo) {
this.titolo = titolo;
}
@Override
public String toString() {
return "Testo [autore=" + autore + ", titolo=" + titolo + "]";
}
}
package sample;
public class Esempio {
/**
* @param args
*/
public static void main(String[] args) {
Testo testo = new Testo("prova", "titolo");
System.out.println(testo);
Testo testo1 = new Testo(testo);
System.out.println(testo1);
TestoA testoa = new TestoA(testo, "prendermi");
System.out.println(testoa);
TestoA testo3 = new TestoA(testoa, "pluto");
System.out.println(testo3);
}
}
e questo è l'output
Testo [autore=prova, titolo=titolo]
Testo [autore=prova, titolo=titolo]
TestoA [altroParametro=prendermi, getAutore()=prova, getTitolo()=titolo]
TestoA [altroParametro=pluto, getAutore()=prova, getTitolo()=titolo]
ora ti commento