The open-closed principle states that a software module should be:
  • Open for extension — It should be possible to alter the behavior of a module or add new features to the module functionality.
  • Closed for modification — Such a module should not allow its code to be modified.
In a nutshell, the open-closed principle helps in designing software modules whose functionality can be extended without having to modify the existing code.

resource: Software Architecture Design Patterns in Java by Partha Kuchana (April 22, 2004)