This example shows how to use versioning in serialization to evolve the class to have a new superclass. For example, if the initial class structure was as follows:
class A {...}; class C extends A {...};
and the evolved class structure is as follows:
class A {...}; class B extends A {...}; class C extends B {...};
then the new version of subclass C should be able to read the old version of subclass C and vice versa. This example demonstrates this principle.
The evolved classses (ASuperClass and ASubClass) must define a serialVersionUID field that is obtained using the command serialver on the original classes (ASuperClass and ASubClass).
Note that in this example, the superclasses (A and B) implement the
Serializable interface. If they did not, subclass C would be responsible
for saving and restoring the fields of A and B. See
Serialization with a NonSerializable
Superclass for additional information about this topic.