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
广告