interfaces

lernen.2007

Erfahrenes Mitglied
Hallo,

zwei Klassen Class1 UND Class2 die die gleiche Interface implementieren:

Class1 implements interface
Class2 implements interface

geht es dann auch so was: Class1 class1 = new Class1();
Class2 class2 = new Class2();
class1 = class2 oder class2 = class1 ist es richtig?

Danke
 
Wenn du ein Objekt einem anderen zuweisen möchtest, müssen beide Objekte vom selben typ sein. Ausser du parst die das Objekt. Aber so allgemein wie du die Frage stellst, würde ich sagen, dass du das mit dem parsen eher lässt. Denn dann müssen die Klassen auch passen.
 
erkan erpolat hat gesagt.:
Hallo,

zwei Klassen Class1 UND Class2 die die gleiche Interface implementieren:

Class1 implements interface
Class2 implements interface

geht es dann auch so was: Class1 class1 = new Class1();
Class2 class2 = new Class2();
class1 = class2 oder class2 = class1 ist es richtig?

Danke
Das ist falsch. Ein Objekt der Klasse Class1 ist doch nicht gleich ein Objekt der Klasse Class2, nur weil sie (mindestens) ein gleiches Interface implementieren.

Aber wenn Du eine Methode hast
Code:
public void kungFoo(MyInterface myInterface){ // mach was}
dann kannst Du sie aufrufen mit
Code:
kungFoo(class1);
kungFoo(class2);
 
Snape hat gesagt.:
Das ist falsch. Ein Objekt der Klasse Class1 ist doch nicht gleich ein Objekt der Klasse Class2, nur weil sie (mindestens) ein gleiches Interface implementieren.

Aber wenn Du eine Methode hast
Code:
public void kungFoo(MyInterface myInterface){ // mach was}
dann kannst Du sie aufrufen mit
Code:
kungFoo(class1);
kungFoo(class2);

Warum geht es dann so?Ist es doch gleiche oder?

Danke
 
Nein, eben nicht. Die Methode kungFoo erwartet als Übergabeparameter ein Objekt vom Typ MyInterface. Da sowohl class1 als auch class2 diese Bedingung erfüllen durch implements MyInterface, können beide übergeben werden. Das heisst aber eben nicht, dass beide Objekte gleich sind. Objekte unterschiedlicher Klassen sind nun einmal auch unterschiedlich, auch wenn sie eine (oder mehrere) Gemeinsamkeit(en) haben sollten.

Vielleicht wird es so klarer:

Klasse Handy implements Uhrzeit
Klasse Armbanduhr implements Uhrzeit

Entspricht dann ein Objekt der Klasse Handy einem Objekt der Klasse Armbanduhr? Wohl kaum.
 

Neue Beiträge

Zurück