If I can change the value of private variable through getter-returned reference then isn't it bypassing the setter method? Doesn't it defeat the purpose of getter-setter and private variables
public class Test{ private Dimension cannotBeChanged; public Test(int height, int width) { if(height!=3) cannotBeChanged.height = height; if(width!=3) cannotBeChanged.width = width; } public Dimension getDimension() { return cannotBeChanged; } public void setDimension(int height, int width) { if(height!=3) cannotBeChanged.height = height; if(width!=3) cannotBeChanged.width = width; } public static void main(String [] args) { Test testOne = new Test(5,5); Dimension testSecond = testOne.getDimension(); testSecond.height = 3; //Changed height and width to unwanted values testSecond.width= 3; }