1

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?

2 Answers2

1

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());
      }
    
    }
Yaqoob Bhatti
  • 1,271
  • 3
  • 14
  • 30
0

If this is your main code then the answer would be yes, that's why we set any variable except global variables to private.

class Demo {
  private String Var = "100";
  void Meth(String str) {
    System.out.println(str + Var);
  }
}
class Main {
  public static void main(String[] args) {
    Demo demo1 = new Demo();
    demo1.Meth("10 x 10 = ");
    System.out.println(demo1.Var);//Error. This variable is set to private so it cannot be accessed.
  }

}

The privacy or control of your variables can only be accesed by the superclass/control block of the variable.