- 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