Nur zu Deiner Vorstellung: Du arbeitest mit Objekten. Und Variablen sind dann sowas wie Zettel, die entweder einfache Werte beinhalten (Dann steht auf dem Zettel eine Zahl oder so) oder es sind Referenzen.
Du hast dann einen Zettel (Variable) auf der steht die Adresse eines Hauses (Referenz auf eine Instanz der Klasse Haus). Und der Zettel hat noch die Beschriftung "meinHaus" (Das ist dann der Name der Variablen: meinHaus).
Nun kannst Du bei dem Haus:
- einen Kasten Bier in den Keller stellen oder dort heraus nehmen
- Zimmer anstreichen
- Fenster öffnen
- Haustür aufschließen, abschliessen, ....
Das sind dann sowas wie Methoden.
Also sowas wie meinHaus.zimmerAnstreichen("Schlafzimmer", "weiss");
Das Haus hat auch einen Status: Es sind 3 Kisten Bier im Keller, das Schlafzimmer ist hellblau gestrichen, ....
(Das wären dann die Felder / Instanzvariablen. Also sowas wie int anzahlKistenBierInKeller
Und nun die alles entscheidende Frage:
Ändert sich an dem Zettel "meinHaus" mit der Adresse irgendwas, wenn ich die Haustüre aufschließe? Oder eine Kiste Bier aus dem Keller hole?
Der Zettel bleibt doch gleich!
Diesbezüglich ist die Entwicklung wirklich 1:1. Die Variable mit der Referenz ändert sich in keiner Weise, nur weil Du mit der Instanz, auf die die Referenz verweist, irgendwas machst. Der Zustand der Instanz kann sich ändern, aber die Referenz bleibt unverändert.