Why is Static method is called using the class name and not by an object?

Since I recall this question, let me post this to keep myself remember this stuff.

Well, ideally, a static class is called using it's class name.

So when saying,


class A {
...


public static int mystaticmethod() {
...

}

}

then the encourage call is A::mystaticmethod(), right?

Well the reason why is that, static binding [or early binding] is done at compiled time, and not by run-time. So it's very ideal to call the A class than an object, let say "A a = new A();" then call it as a.mystaticmethod() which is strongly discouraged.

So anyway, that's the reason why calling a static method is thru it's class name and not by an object. Object is done at run-time, where dynamic binding is done in that process.


Comments

Popular posts from this blog

Using sed with backreference as the replacement pattern

Use Shell Editor for Eclipse for editing bash, ksh, csh in Unix/Linux system

LVM: How to remove a volume using pvremove