Search code examples
javacomputer-science

Do I avoid the risk of privacy leaks, if I set the instance variables to private?


I am working on a Java assignment. My professor wrote: Warning: Be sure to set the attributes of the Class in such a way to avoid the risk of any privacy leaks. I am getting confused with it. My understanding towards privacy leaks is always to use a copy constructor, but how can instance variables get privacy leaked? Is this why we always set instance variables to private?


Solution

  • Here is an Example in DemoClass variables are private which can not be accessed directly. You can only get these variables with getters and setters

    public class DemoClass {
        // you can not get these variable directly
            private String stringValue;
            private int integerValue;
        
            public DemoClass(String stringValue, int integerValue) {
                this.stringValue = stringValue;
                this.integerValue = integerValue;
            }
        
            public void setStringValue(String stringValue) {
                this.stringValue = stringValue;
            }
        
            public void setIntegerValue(int integerValue) {
                this.integerValue = integerValue;
            }
        
            public String getStringValue() {
                return stringValue;
            }
        
            public int getIntegerValue() {
                return integerValue;
            }
        }
    
    
        class Main {
          public static void main(String[] args) {
                DemoClass demoClass =new  DemoClass("My String Value",120);
                System.out.println(demoClass.getIntegerValue());
                System.out.println(demoClass.getStringValue());
          }
        
        }