`// This rule specifies whether public fields are allowed
// or not.
// In general no class should expose its internal data
// structures. This is also called 'Information Hiding'.
// You should provide get- and set methods to access value
// of data elements but not the data element itself.
// Later changes of the type are very expensive if not
// impossible. This rule applies for both isntance and
// class (static) fields. Public constants (static final)
// are allowed.
// Public fields exposing the data type
public class Coordinate
{
public static int count = 0; // count of all instances
public int x;
public int y;
}
// Data type hidden; access with methods
// You can easily exchange the data type
// if needed.
public class Coordinate
{
// old version
// private static int count = 0;
// private int x;
// private int y;
public void incrementCount() {count++;}
public int getCount() { return count; }
/** @deprecated */
public void setX(int x) {this.x = x;}
` `/** @deprecated */``
public int getX() {return (int) this.x;}
` `/** @deprecated */``
public void setY(int y) {this.y = y;}``
` `/** @deprecated */``
public int getY() {return (int) this.y;}
// new version
private double x;
private double y;
` `public void setX(double x) {this.x = x;}
` `public double getX() {return this.x;}
` `public void setY(double y) {this.y = y;}``
` `public double getY() {return this.y;}`
`}
`