java è case sensitive: Cubbyhole è diverso da cubbyhole, ad esempio.
Nel tuo caso, hai una classe che dichiara un campo "number", lo stesso costruttore della classe ha come firma "int number"
this.number si riferisce al campo number definito nella classe, a cui vai ad assegnare il valore "number" passato al costruttore (int number).
Questo fa la stessa cosa:
codice:
public Producer(Cubbyhole c, int n) {
cubbyhole = c;
number = n;
}
dove ometto "this" (non c'è altro "number" oltre al campo "number" dichiarato nella classe, per cui non ci sono problemi di omonimia e il riferimento esplicito può essere pure omesso)
Altro esempio:
codice:
public Producer(Cubbyhole cubbyhole, int number) {
this.cubbyhole = cubbyhole;
this.number = number;
}
Di nuovo, ottieni lo stesso risultato (perchè?)