Let's say you have a class Ball with one static variable named count. This static variable will be represented in the virtual machine as "static 0". E.g.:
...
push static 0 // push Ball.count on the stack
...
pop static 0 // pop the top of the stack into Ball.count
...
Suppose you have another class, Paddle, which also has one static variable named position. This will also be represented as "static 0". The difference is, that the first variable is accessible only from Ball.vm and the second one only from Paddle.vm.
When we translate these variables to HACK assembly we need to ensure that they are 2 different places in the memory. We can use the free variable feature as I described before, but instead of naming them Ball.count and Paddle.position, we'll name them Ball.0 and Paddle.0. The assembler will assign them unique addresses in the range 16-255 and all is good.
I am not sure if you solved your problem or if you didn't. I hope I managed to help you.