Java: Darstellen einer Klasse in eine nicht verwandte Schnittstelle

8

Dies führt offensichtlich zu einem Kompilierungsfehler, weil Chair nicht mit Cat verwandt ist:

%Vor%

Warum bekomme ich dann zur Laufzeit nur eine Ausnahme, wenn ich eine Cat-Referenz auf die nicht verwandte Schnittstelle Furniture ausspiele, während der Compiler offensichtlich feststellen kann, dass Cat Möbel nicht implementiert?

%Vor%     
enp4yne 02.10.2013, 16:11
quelle

1 Antwort

12

Der Grund, warum dies kompiliert wird

%Vor%

ist, dass Sie sehr gut

haben können %Vor%

Wenn Sie eine CatFurniture -Instanz erstellen, können Sie sie Cat cat zuweisen, und diese Instanz kann in Furniture umgewandelt werden. Mit anderen Worten, es ist möglich, dass einige Cat Untertypen die Furniture Schnittstelle implementieren.

In Ihrem ersten Beispiel

%Vor%

es ist unmöglich, dass einige Cat subtype Chair erweitert, es sei denn Cat selbst erstreckt sich von Chair .

    
Sotirios Delimanolis 02.10.2013, 16:47
quelle