I have an abstract class that will have many implementors. There are, of course, many places to put abstract classes in a Java package structure. Should the abstract class be in the same package as the implementors, or should it be in an "abstract package" package, or somewhere else? PelasePlease explain why you would place it there - I'm looking for design discussion, not just what I should do in this particular case.