[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: the benefits of immutability
Michael St . Hippolyte wrote:
> the real culprit is not inheritance but mutability. This is also
> true of the various Circle examples in this thread. I would be
> curious to see if anyone can come up with a similar example showing
> broken behavior when functional restrictions are in place,
> i.e. objects are immutable and methods are side-effect free.
What kind of functional restrictions do you have in mind? The classes
used earlier in this thread -- Circle and ColoredCircle -- are
immutable, for some fairly reasonable definition of "immutable". All
of their methods are side-effect free (or can be made side-effect free
without any bearing on the equivalence problem).
public class Circle {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
public final int getRadius() {
return radius;
}
// public boolean equals(Object obj);
}
public final class ColoredCircle extends Circle {
private Color color;
public ColoredCircle(int radius, Color color) {
super(radius);
this.color = color;
}
public final Color getColor() {
return color;
}
// public boolean equals(Object obj);
}
If these aren't immutable, then I don't know what is.