package zendo.playground.various; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; public class Class2 { private static class A implements Serializable { private int x = 5; private void writeObject(ObjectOutputStream outputStream) throws IOException { System.out.println("In A.writeObject() before default"); outputStream.defaultWriteObject(); System.out.println("In A.writeObject() after default"); } } private static class B extends A { private int y = 6; private void writeObject(ObjectOutputStream outputStream) throws IOException { System.out.println("In B.writeObject() before default"); outputStream.defaultWriteObject(); System.out.println("In B.writeObject() after default"); } } public static void main(String[] args) throws Exception { B b = new B(); ObjectOutputStream outputStream = new ObjectOutputStream(new ByteArrayOutputStream()); outputStream.writeObject(b); outputStream.close(); } }