Evidentemente uno dei due oggetti deve "conoscere" l'altro.
Se è la memoria a conoscere la stampante, allora conosce tutti i suoi metodi pubblici. E se la stampante, fra i suoi metodi pubblici, ha il metodo "impostaAColori()" o "impostaBiancoNero()", semplicemente la memoria può invocare tali metodi su un oggetto di tipo Stampante (che lei, appunto, conosce).

Allo stesso modo in cui tu usi il metodo println() della classe PrintStream quando fai "System.out.println()". Sei a conoscenza di un oggetto (che si chiama "out") che possiede quel metodo... e lo usi.

Un oggetto può usare tutti i metodi che lui dichiara (perchè, ovviamente li conosce tutti)... il resto del mondo può usare tutti i metodi che quell'oggetto dichiara come "pubblici" (o protected, per altri casi particolari).... ovviamente richiamandoli sull'istanza dell'oggetto.


Ciao.