item (no idea what this does)
|--- scrap (stores the variables you need for the recycler to know about the scrap)
| |--- computer (the actual scrap Item)
Say for example your recycler is very generic. It gives you some "points" based on the item fed in. A computer has more "points" than a sheet of metal, but less "points" than a rocket engine.
You would add the points variable to the Scrap class. Then subclass it into computer, and set the variable to say, 7 points. Do the same for sheet metal, which is say, 5 points, and the same for rocket engine, which is say, 15 points.
Then you put a sheet metal, a computer and a rocket engine in and array and feed it to the recycler. The recycler loops this array, casts everything to the "scrap" class if the type isn't already "scrap", then gets the points and adds them up. By the end of it, your recycler has added up 27 points.