The use I have found for private variables is say you have a health variable. But you want to have a function be called each time you set the health(like for example a visual update). So what I did in that case was make my health variable private and made Get and Set functions for that variable. In the Set function it sets the health variable and calls any other function I want to be called with it. Making it private forces any other programmer to use those 2 functions so when updating the health value that additional function is called.