In the following example, x can be changed by class B even though it's a private member of class A. What's the reason for this?
import java.util.Date;
class A {
    private Date x;
    public A(){
        super();
        x = new Date();
    }
    public Date getDate(){
        return x;
    }
    public void print(){
        System.out.println(this.x);
    }
}
class B {
    public static void main(String[] args){
    A a = new A();
    a.print();
    Date d = a.getDate();
    d.setMonth(12);
    System.out.println(d);
    a.print();
    }
}
The output is:
Initial date generated by A
Date changed by B
Date changed by B (why does it change a private member here?)
 
     
     
     
     
     
    