Quote Originariamente inviata da luca93abc Visualizza il messaggio
Ora, io la instanzio specificando quanto c'è nel costruttore a partire da un file (quindi le informazioni iniziali le ho). Però poi ho necessità di instanziarla a partire dal solo numero (in stile albergo insomma). Come faccio? Ho provato a usare this(...), ma ho creato solo confusione. Grazie
Una classe può avere più costruttori. Se ne ha di più semplicemente è perchè chi ha scritto la classe vuole offrire più modi diversi per costruire 1 oggetto di quella classe, magari permettendo di passare più o meno dati a seconda del costruttore. Alla fin fine si tratta solo di un principio di "flessibilità".

Prendi per esempio la classe java.awt.Color. Ha svariati costruttori:

public Color(float r, float g, float b)
public Color(float r, float g, float b, float a)
public Color(int r, int g, int b)
public Color(int r, int g, int b, int a)

....e altri....

Pertanto puoi costruire un oggetto Color scegliendo il costruttore che riceve i dati che hai a disposizione, con alpha se ce l'hai o senza alpha, ecc...

Poi all'interno di un costruttore, come PRIMA istruzione è lecito invocare un altro costruttore della stessa classe. Questo lo si fa per riutilizzare il codice di un altro costruttore evitando ripetizioni.

Sempre in Color viene fatto:

codice:
    public Color(int r, int g, int b) {
        this(r, g, b, 255);
    }

Ovvero il costruttore che riceve r/g/b passa la palla all'altro costruttore

public Color(int r, int g, int b, int a)

passando 255 come a (alpha). Così si riutilizza il codice.