- Given a base & concrete class in java.
- Base class is Serializable (implements Serializable interface).
- Concrete class is extending the base class.
- We have already discussed
- Impact of Inheritance on serialization in java, when concrete class is serializable.
Example: Base class implements Serializable interface
- Base class, Person implements Serializable interface.
- Drive or concrete class Employee extends Person class.
- Employee class inherits Serializable feature of Person class (as per the oops concept)..
Program: Serialization when base class is Serializable.
1.) Base class implements Serializable interface
- Person class is implementing the Serializable interface
- Person class and all of its subclasses inherits serializable features.
- We will mark lastName & contact data members as static and transient respectively.
- Static & transient data members will not be serialized.
package org.learn; import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; public String firstName; public static String lastName="Static member will not be serialzed"; public int age; public transient String contact="Trasient member will not be serialized"; public Person(String firstName,int age, String contact) { this.firstName = firstName; this.age = age; this.contact = contact; } public String toString() { return "[" + firstName + " " + lastName + " " + age + " " +contact +"]"; } }
2.) Concrete class (Employee) extends Base class
The employee class is inheriting Person class, so Employee class will become the Serializable.
- We will have static & transient data members in Employee class.
- Static & transient data members will not be serialized
package org.learn; public class Employee extends Person { private static final long serialVersionUID = 1L; public String department; public static int employCode = 1010; public int salary; public transient String project="Trasient member will not be serialized"; public Employee(String department,int salary, String project, String firstName,int age, String contact) { super(firstName,age, contact); this.department = department; this.salary = salary; this.project = project; } public String toString() { return super.toString() + "[" + department + " " + employCode + " " + salary + " " +project +"]"; } }
3.) SerializeDeserialize class to serialize concrete class
SerializeDeserialize class have couple of methods as follows.
- serialize method is used to serialize Employee object
- deserialize method is used to deserialize Employee object.
package org.learn; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeDeserialize { public static void serialize() throws IOException { Employee employee = new Employee( "IT",25, "server", "Mike", 34, "001894536"); //Set static variable Employee.lastName = "harvey"; FileOutputStream output = new FileOutputStream( new File("savePerson.txt")); ObjectOutputStream outputStream = new ObjectOutputStream(output); outputStream.writeObject(employee); output.close(); outputStream.close(); System.out.println("Serialized the Employee object : "+employee); //Update the static variable to confirm that its not serialized Employee.lastName = "Setting last name after serialization"; Employee.employCode = 9999; } public static void deSerialize() throws IOException, ClassNotFoundException { FileInputStream inputStream=new FileInputStream( new File("savePerson.txt")); ObjectInputStream objectInputStream=new ObjectInputStream(inputStream); Employee employee = (Employee) objectInputStream.readObject(); System.out.println("Deserialize the Employee object :"+ employee); objectInputStream.close(); inputStream.close(); } public static void main(String[] args) throws IOException, ClassNotFoundException { serialize(); deSerialize(); } }
Output: Base class implements Serializable interface
Serialized the Employee object : [Mike harvey 34 001894536][IT 1010 25 server] Deserialize the Employee object :[Mike Setting last name after serialization 34 null][IT 9999 25 null]
Download Code : Inheritance & serialization in java