I have everything as subclasses of the Item class, but the subclasses only differ in a few ways. For instance, going off of memory, the only line in the Weapon subclass constructor is the line "equipmentSlot = HANDS," meaning that when you try to 'w'ear/wield that item, the game checks what value is entered into equipmentSlot (HANDS is a static final integer), and puts it into the player's appropriate equipment slot.
Is this the best way to do it? I don't know, but maybe it'll help you out, or give you an idea.