Hallo,
Das ist dieselbe Spitzfindigkeit, als wenn ich auf ein Foto zeige und sage: "Das ist meine Schwester." Natürlich ist es nur ein Bild meiner Schwester, aber diesen Unterschied macht normalerweise niemand.
Diesen Unterschied finde ich aber sehr wichtig! Schließlich kann man Objekte auf zwei Arten vergleichen:
1. Verweisgleichheit
2. Wertgleichheit
Ebenso ist die Variable natürlich strenggenommen nur der benannte Speicherplatz für ein Objekt. Trotzdem halte ich es für eine zulässige sprachliche Vereinfachung zu sagen: Eine Variable *ist* ein Objekt (repräsentiert ein Objekt).
Das ist für mich kein Widerspruch, wie das folgende, wenig sinnvolle Codebeispiel zeigt:
float anteil = 0.381;
Ich habe nun ein Objekt vom Typ float, das an einer bestimmten (für den Programmierer idR nicht relevanten) Stelle im Speicher liegt. Die Variable "anteil" repräsentiert dieses Objekt und seinen Wert.
anteil = 2.2;
Nun habe ich dem Objekt (der Variablen) einen neuen Wert zugewiesen. Seine Position im Speicher und sein Typ ist unverändert, aber sein Wert ist verändert. Ist das nicht genau das, was du mit dem oben zitierten Satz ausgeschlossen hast? Oder verstehe ich immer noch nicht, was du eigentlich meinst?
Genau da ist mein Problem. Für mich ist der Wert "2.2" quasi das "Objekt", das in der Variablen anteil gespeichert wird. Andersherum hieße es ja das du über die Variable anteil in das Objekt eingreifst und dessen Werte änderst.
Bei so einem einfachen Beispiel kann man sich das ja noch irgendwie zurechtlegen aber was wird denn aus den Objekt-Methoden und geschützten Membern. Das wären ja dann nach dieser Denke Member der Variablen. Wenn ich das Objekt in dieser Hierarchie weglasse muss ich sagen, die Variable greift auf ihren Member DoSomething zu. Finde nur ich das unpassend?
Sicher kann man sich darauf einigen lokale Variablen und Objekte als ein und dasselbe zu behandeln, aber wenn man alle Blickwinkel und Möglichkeiten bei der Programmierung beachtet kommt man meiner Meinung nach nicht umhin saubere und eindeutige Formulierungen zu verwenden. Und das heißt für mich das eine Variable nicht das gleiche ist wie ein Objekt.
MfG