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.