My answer to Why abstract methods in Java cannot be static?
Answer by Vaibhav Kashyap:
Abstract methods are meant to be overridden in order to use them because when you declare a method as abstract it just has its structure, that particular method doesn't have the body of the method. Therefore in order use, we need to override and implement their body. And by the virtue of the fact class containing an abstract method has to be abstract therefore a class extending an abstract class (containing abstract method) if it doesn't implement an abstract method of parent abstract class then the class extending the abstract class has be declared abstract too. Now lets introduce 'static' here. Java says static inhibits overriding because overriding depends on having an instance of a class. The point of polymorphism is that you can subclass a class and the objects implementing those subclasses will have different behaviours for the same methods defined in the superclass (and overridden in the subclasses). A static method is not associated with any instance of a class so the concept is not applicable. In layman terms, static makes a class level reference instead of object level reference. An abstract class cannot be instantiated. In order to use the method of abstract class you need to have reference to it generated with the help of the class extending it which is an indirect object reference.