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%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
.
Tags und Links compilation java runtime interface casting