Warum können Objekte unterschiedlicher Klassen nicht den gleichen Zustand besitzen?

... komplette Frage anzeigen

6 Antworten

kA was genau du meinst.

Angenommen ich hab ne Klasse "Auto" mit der Eigenschaft farbe.

auto1 = Auto(blau)
auto2 = Auto(blau)
auto3 = Auto(rot)


In deinem Sinne haben auto1 und auto2 doch denselben Zusatand, oder was meinst du? Bin nicht sicher, was du mit "Zustand" meinst. Kann auch ne Klasse "CoolesAuto" mit der Eigenschaft Farbe machen und genauso verwenden.




Antwort bewerten Vielen Dank für Deine Bewertung

Deine Frage lässt sich so pauschal nicht beantworten, weil sie eine kontextabhängige Behauptung als Falsch impliziert. Zunächst einmal müsste geklärt werden, was mit "Zustand" gemeint ist, bevor man weiter ins Detail geht.

Ich kann beispielsweise eine Klasse erstellen, die eine Gleitkommazahl darstellt. Dafür gibt es primitive Datentypen, die so etwas ermöglichen. Ich kann aber auch eine Klasse erzeugen, die eine Gleitkommazahl darstellt, in dem ich in ihr 4 Eigenschaften definiere: Vorzeichen, Mantisse, Basis und Exponent. In beiden Fällen kann ich die Zahl 3.1415 darstellen. Die Ausgabe/Darstellung des Wertes ist gleich, obwohl es zwei unterschiedliche Klassen sind.

Ähnliches Verhalten gilt für Vererbung. Wenn eine Klasse von einer anderen Klasse erbt, dann sind sie technisch gesehen unterschiedlich, aber beide erfüllen den gleichen Zweck, wenn keine Änderungen vorgenommen wurden. Vor allem in der Vererbung kann es kompliziert werden, wenn es darum geht zu definieren, was "gleicher Zustand" bedeutet/bedeuten soll.

Durch Konvertierungsmethoden ist die Umwandlung eines Objektes von einer Klasse in ein Objekt einer anderen Klasse möglich, entweder implizit ohne Datenverlust oder explizit mit Datenverlust. Implizit wäre gleichzusetzen mit "gleicher Zustand", explizit hingegen nicht. (Beispiel: ein Integer kann immer als Gleitkommazahl dargestellt werden - ohne Informationsverlust. Andersherum ist es jedoch nicht immer möglich.)

So lange nicht definiert ist, was mit Zustand gemeint ist oder in welchem Kontext die Aussage zu betrachten ist, gibt es keine richtige Antwort.

Antwort bewerten Vielen Dank für Deine Bewertung

Weil jede Instanz eines Objektes auch einen (versteckten) Zeiger auf den Prototypen der Klasse enthält.

Und selbst wenn zwei Klassen den gleichen Aufbau haben und nach der Instantiierung mit den gleichen Werten belegt wurden, so unterscheiden sie sich doch in dem Wert, der in diesem Zeiger steht.

Wenn dieser Wert auch der gleiche wäre, dann würde er auch auf denselben Prototypen verweisen. Das geht aber nur, wenn die beiden Klassen denselben Namen haben. Zwei Klassen mit identischem Namen sind aber im gleichen Namensraum untersagt. Der Compiler würde eine Fehler liefern.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von CrystalixXx
20.04.2016, 19:08

Da müsste man jetzt noch zwischen Referenztypen und Wertetypen unterscheiden.

0

Was meinst du mit "Zustand"?

Bitte definiere deine Frage etwas genauer.

LG Willibergi

Antwort bewerten Vielen Dank für Deine Bewertung

Der Zustand einer Klasse sagt ja aus welche Werte die Attribute der Klasse gerade besitzen. Verschiedene Klassen haben auch verschiedene Attribute und können daher nicht den selben Zustand haben. 

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von registerrr
20.04.2016, 15:22

ok, danke

0
Kommentar von kordely
20.04.2016, 15:22

Was können wir sagen, wenn zwei Klasse dieselbe Attribute haben?

0
Kommentar von CrystalixXx
20.04.2016, 15:57

Was hält mich davon ab zwei Klassen mit den gleichen Attributen/Eigenschaften zu definieren?

0

Hallo registerrr,

Möchtest du das ganze bitte nochmal in einen Kontext setzen?
So ansich ist das eine ziemlich generische Frage mit dutzenden Antwortmöglichkeiten

LG

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von registerrr
20.04.2016, 15:15

Hallo, es geht um Objektorientierte programmierung. Ich weiß eigentlich nicht was ich noch dazu sagen könnte :). Müsste man eigentlich mit Basic-Informatikkentnisse beantworten können, daher nicht zu kompliziert denken.

0

Was möchtest Du wissen?