Why does FindCreativeObjectsWithTag return the creative_object_interface?

Hi.
I am just trying to understand why FindCreativeObjectsWithTag returns a creative_object_interface and not the base class of creative_object. I see that creative_object inherits from the creative_object_interface, which is positional, and I think I understand that.

But I don’t understand why the interface is returned and that through the interface a cast can be sent to other classes such as creative_device, which share the same interface.

If two classes share an interface, does that bridge them too somehow? Is it that the interface serves as some type of conduit or portal which enables classes to communicate or cast to one another? The way it seems to be working in Verse is that two classes sharing a common interface can also use that interface as a way to cast and connect to one another. Is that correct?

I understood interfaces to be like contracts where classes agree to use a set of unimplemented methods but the interface is not connecting one class to another. The interface was between the class and interface, not between the classes sharing the interface. So I am just not understanding why the interface is returned and not the base class. That’s all.

Any thoughts appreciated.