Open Closed Principle Java