It helps because you do a “Cast To Items” and it will work for all items, instead of having to do Cast To Knife, if failed Cast to Briefcase, if failed Cast to Pistol.
All functions functions and variables that are shared across all items you should store inside Items class, so that you can do these kinds of ‘generic’ castings that will work for all items you have.
Lets suppose your items have durability, and anytime they get shot the durability should decrease.
So inside your bullet’s code/blueprint, you can do something like this:
ComponentOverlap->CastToItems->Durability -= 1 (decreases items durability by 1 when shot with a bullet)
And this code in your bullet would work for knives, briefcases and pistols.
If you have a PlayPickupEffect defined within you Items class, you can do a CastToItems->PlayPickupEffect in your character or anywhere else, instead of having to first discover which item class it is and then call its own pickup function that can even have different names and be completely different (not really the same function is going to be called if they don’t share the same class)