 In this case, methods such as must be changed to yield a new instance, rather than modifying the instance they act on.This means that it is no longer a problem to define , and the inheritance reflects the mathematical relationship between circles and ellipses.A disadvantage is that changing the value of an instance then requires an assignment, which is inconvenient and prone to programming errors, e.g.,

A second disadvantage is that such an assignment conceptually involves a temporary value, which could reduce performance and be difficult to optimise.