I think your problem is here: "It's necessity of the programmer to make it public & static, so that it is callable without creating object of class."
This is a misconception. To understand it, learn how
Singleton design pattern works.
See:
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)[
^],
http://en.wikipedia.org/wiki/Singleton_(mathematics)[
^],
http://en.wikipedia.org/wiki/Singleton_pattern[
^].
In your case, you need to have an instance of the class but provide a mechanism making this instance to be only one per your process. Look at the code sample in the referenced article and you well see it.
Static members of the class are not really alienated by the class. They simply have no access no any non-static members as they don't have an access to the instance. They have access to all static members of the class. Each static members are per-class, each non-static — per instance.
Also, it is not true that a static method function work with the instance of its class. It can, but the instance should be passed to it as a parameter.
Now, a little surprise for you: do you know that the non-static function (also called the instance function) works with the instance exactly in the same way: it is passed as a function parameter; only this parameter is implicit, not shown in the signature. Now, when I tell you how this parameter is called, you should catch the essence of instances. Read my lips: it is called "this". Think about it.
—SA