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 次瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始學習
廣告
© . All rights reserved.