How come if I have a static method doStuff() in class A that I want to call. then either I must have my own(calling) method as static or make an instance of my class and then call it ex: new A().doStuff(). BUT if I subclass that class say B extends A , then I get to call the static method of class A without even having to have the calling method in class B as static or make an obj of class A. STRANGE!!! Can anyone shed some light on this? All this time I thought statics could only be called from statics.