Item 15: Minimize the accessibility of classes and membersItem 16: In public classes, use accessor methods, not public fieldsItem 17: Minimize mutabilityItem 18: Favor composition over inheritanceItem 19: Design and document for inheritance or else prohibit itItem 20: Prefer interfaces to abstract classesItem 21: Design interfaces for posterityItem 22: Use interfaces only to define typesItem 23: Prefer class hierarchies to tagged classesItem 24: Favor static member classes over nonstaticItem 25: Limit source files to a single top-level class