public class Test3 { public static void main(String[] args) { Enveloppeur wrapper1 = new Enveloppeur(5); Enveloppeur wrapper2 = new Enveloppeur(); System.out.println(wrapper1.getI()); System.out.println(wrapper2.getI()); Origin o = wrapper1.getO(); wrapper2.setO(o); o=null; System.out.println(wrapper1.getI()); System.out.println(wrapper2.getI()); wrapper1.setI(6); System.out.println(wrapper1.getI()); System.out.println(wrapper2.getI()); } } class Enveloppeur { private Origin o; Enveloppeur(){ o = new Origin(); } Enveloppeur(int i){ o = new Origin(i); } public void setI(int i) { o.setOrigin(i); } public int getI() { return o.getOrigin(); } public Origin getO() { return o; } public void setO(Origin o) { this.o=o; } } class Origin { //wrapper private int i; Origin(){ } Origin(int i){ setOrigin(i); } void setOrigin(int i){ this.i=i; } int getOrigin(){ return i; } }