Data-Oriented-Design is a great paradigm
A single class is great because you can modify the children as needed while keeping the core functionality on the parent. The individual item info can be kept in a spreadsheet and populated at runtime.
The best part about it is it’s incredibly scalable.