In Java, all non-static, non-private methods are virtual by default. This means they can be overridden in subclasses. Java does not explicitly use the "virtual" keyword like C++, as method overriding is an inherent feature of inheritance. For More details about this read this blog : Virtual Function In Java | Run-Time Polymorphism In Java