Why do we say that a static method in Java is not a virtual method?
<p>In object-oriented paradigm, a <strong>virtual</strong> function or virtual method is a function or method whose behavior can be overridden within an inheriting class by a function with the same signature to provide the <strong>polymorphic behavior</strong>.</p>

<hr>

<p>According to the definition, every non-static method in Java is by default <strong>virtual method</strong> except <strong>final and private methods</strong>. The method which cannot be inherited for <strong>polymorphic</strong> behavior is <strong>not</strong> a virtual method.</p>

<hr>

<p><em><strong>An abstract class in Java is nothing but the pure virtual method equivalent to C++.</em></strong></p>

<hr>

<p>Why do we say that a static method in Java is not a virtual method? Even if we can override the static method and consequently it may give some advantages of the <strong>polymorphism</strong> and also a static method in Java can be invoked mostly with it's associated class name but it is also possible to invoke it using the object of it's associated class in <strong>Java</strong> in the same way that an instance method is invoked.</p>
