userobjectInt o = new userObjectImpl()
so here i am create the userimple with userint interface so where i am decoupling helps here, i mean in which scenorio in future will help for the decoupling.
In that case you use an Interface (watch your naming, classes, interfaces etc start with a capital letter) but still instantiate the concrete class. So the implementing class depends just as much on the implementation.
To really decouple you would create a factory method that does the instantiation for you.
Check this code
You see, now the implementation is completely decoupled from the rest. You can change the actual class that is returned by the factory method, as well as the full implementation.
What you want to do though is having a controller class inject the dependency into the model classes instead of obtaining them yourself.
You can do that either with a setter or in the constructor.
Check this code:
Now the model class is completely independent from a) the implementation of the user object and b) the creation or obtaining.
There are frameworks that handle dependency injection for you, such as Spring, or Google Guice.
Happy Coding...