What are basic rules, which govern creation of immutable classes?
· Declare the class final. · Declare all data private. · Provide only getter methods and no setter methods. · Set all instance data in the constructor. · Clone mutable objects for which a reference to them is returned. · Clone mutable objects for which a reference to them is received. · Implement a deep clone if the default shallow clone is not correct for a properly behaved immutable object.