An abstract class cannot be instantiated, but it is a normal class like any other which you can use to perform static (class-related) computations. Since static methods are related to the class and not to an instance of it, you can invoke static methods of abstract classes as your example perfectly demonstrates.
An interesting question Murugan! To clarify / Confuse to clarify, > An abtract class cannot be instantiated because it is an incomplete class and one cannot provide concrete implementations of the class (ie via new operator) > An abstract class can be compiled and executed just like any other class. Is this justifiable in any sense? Because ur class is incomplete? > But there are enough checks in the java Compiler which doesn't let you the unwanted, like ... >abstract methods cannot be static So there is no way u can access the 'incomplete' portion of ur class without having an instance of ur class. (which u cannot because ur class is abstract). so basically u cannot access that abstract method until u give it a concrete implementation.
> u cannot access the instance methods of ur class without having an instance of ur class. So u cannot access them from the "main" of an abstract class. > So the only thing u can do is access the static methods from the 'main' of ur abstract class. and get it to run also. Interesting!