Virtual in C++ means
overrideable. In Java all methods are assumed
overrideable unless marked final (or private which implies final). Virtual has yet
another meaning in C++. When you inherit from
several classes, which may share a common subclass, in C++ you have to decide how many copies of the base class
variables you want — a shared or separate embedded in this new object.
virtual refers to using a single shared copy. In Java you
can inherit from only one class, so the problem never comes up.