Java 编程中的对象序列化和继承


序列化是指将对象状态更改为字节流的过程,以便该字节流可以返回到对象的副本中

在 Java 中,如果其类或父类实现 Serializable 接口或 Externalizable 接口,则称一个对象是可序列化的。

反序列化是将序列化的对象转换回对象的副本。

对象与继承的序列化有三种情况。

  • 如果父类是可序列化的,则子类自动可序列化

  • 即使父类不可序列化,子类仍然可以序列化

  • 如果我们要让子类不可序列化,即使父类是可序列化的

让我们看一个示例,其中当父类可序列化时,子类自动变为可序列化 -

 现场演示

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.NotSerializableException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Parent implements Serializable {
   int i = 33;
}
class Child extends Parent {
   int j = 21;
}
public class Example {
   public static void main(String[] args) throws IOException, ClassNotFoundException {
      Child writer = new Child();
      FileOutputStream fos = new FileOutputStream("file.txt");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(writer);
      FileInputStream fis = new FileInputStream("file.txt");
      ObjectInputStream ois = new ObjectInputStream(fis);
      Child reader = (Child)ois.readObject();
      System.out.println(reader.i+","+reader.j);
   }
}

输出

33,21

更新于: 26-6 月-2020

825 次浏览

开启你的职业生涯

完成课程即可获得认证

开始学习
广告