Virtual interface usage in package

Dear Forum,

Please help understand one issue connected with virtual interface usage in package.
So I have a package in which I want to declare the interface instance. When I am declaring it, than simulator gives error.
However if I declare the interface as virtual than no error comes up:

package defsPkg; // Simulator gives ERROR
...
fifoPortsItf tiFifoItf;

endpacakge

package defsPkg;
...
virtual fifoPortsItf tiFifoItf; // No ERROR

endpacakge

I want to understand why there is a need to use virtual interface in the package, as it is static object?

In the class we need to use virtual interface because class is dynamic object but interface is static object, to make the connection.
However here we have 2 static objects interface and package, why we need to use virtual interface here?

In reply to haykp:

A package is not a static object. Per section 3.9 of the LRM:

Packages provide a declaration space, which can be shared by other building blocks. Package declarations can be imported into other building blocks, including other packages.

Since the package is a declaration space, you can’t instantiate static objects in it.