Ein Objekt a hat den selben Zustand wie Objekt b / Ist vom Typ C....

Jack159

Bekanntes Mitglied
Hallo,

Ich habe ein paar Fragen zu typischen Redewendungen, wo mir nicht 100% klar ist, was genau damit gemeint ist.

Ein Objekt a:
- hat den selben Zustand wie Objekt B. (Meine Idee: Objekt A und B haben die gleichen Attributwerte, jedoch unterschiedliche Identitäten)

- ist von der Klasse A. (Meine Idee: Das Objekt a hat alle Methoden und Attribute der Klasse A. Also:
Java:
A a = new A();

- ist vom Typ C: (Meine Idee: Das Objekt a hat alle Methoden und Attribute der Klasse C. Also:
Java:
C a = new C();


Liege ich damit richtig?
 
In allen drei Punkten Zustimmung. Nur den Java-Code für die Erklärung von "ist vom Typ XXX" würde ich etwas anders schreiben:
Java:
// Wenn true, ist dasObjekt vom Typ A
a.getClass() == A.class;

// Wenn true, ist dasObjekt vom Typ C
dasObjekt.getClass() == C.class;
Man könnte hier argumentieren, dass "ist vom Typ" auch für Subklassen des gesuchten Typs erfüllt ist.[EDIT]
--Das habe ich nachträglich eingefügt, ohne den Folgepost zu beachten 😳
Dann wäre der Prüfcode eher so:
Java:
// Wenn true, ist dasObjekt vom Typ A,
// wenn "dasObjekt" eine Instanz der Klasse C ist
// und C A extended dann käme hier auch true raus
dasObjekt instanceof A;
[/EDIT]
Ich neige aber dazu, es so streng zu sehen, wie Du.
 
Zuletzt bearbeitet von einem Moderator:
  1. Nicht ganz leicht zu sagen. Ob man da zwischen "selber" und "gleich" unterscheidet, ist die Frage.
    Beispiel:
    Java:
    class Example {
    	String s;
    	
    	Example(String s) {
    		this.s = s;
    	}
    	
    	boolean equals(Object o) {
    		return s.equals(((Example) o).s);
    	}
    }
    Java:
    Example a = new Example(new String());
    Example b = new Example(new String());
    boolean equal = a.equals(b); // true
    boolean identical = a == b; // false
    boolean equalState = a.s.equals(b.s); // true
    boolean identicalState = a.s == b.s; // false
    // Haben a und b nun den denselben oder nur den gleichen Zustand?
  2. Den Begriff "Klasse" würde ich verwenden, wenn man von einem Objekt spricht, also: Das Objekt, auf das die Variable x referenziert, ist eine Instanz der Klasse X.
  3. Den Begriff "Typ" würde ich verwenden, wenn man von einer Referenzvariable spricht: Die Variable x ist vom Typ X (kann aber auch Y sein, wenn Y eine Oberklasse von X oder ein Interface ist, das von X implementiert wird).
 
Zuletzt bearbeitet:

Zurück
Oben