The Liskov substitution principle
If a class Y is “just like” a class X except for extensions, then it should be possible to use a Y object anywhere you can use an X object
You should design your classes to preserve that property unless you have a strong reason to do otherwise