Как работает сериализация, когда только подкласс реализует сериализуемый

Только подкласс реализовалSerializable интерфейс.

import java.io.*;

public class NewClass1{

    private int i;
    NewClass1(){
    i=10;
    }
    int getVal() {
        return i;
    }
    void setVal(int i) {
        this.i=i;
    }
}

class MyClass extends NewClass1 implements Serializable{

    private String s;
    private NewClass1 n;

    MyClass(String s) {
        this.s = s;
        setVal(20);
    }

    public String toString() {
        return s + " " + getVal();
    }

    public static void main(String args[]) {
        MyClass m = new MyClass("Serial");
        try {
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serial.txt"));
            oos.writeObject(m); //writing current state
            oos.flush();
            oos.close();
            System.out.print(m); // display current state object value
        } catch (IOException e) {
            System.out.print(e);
        }
        try {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("serial.txt"));
            MyClass o = (MyClass) ois.readObject(); // reading saved object
            ois.close();
            System.out.print(o); // display saved object state
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

Одна вещь, которую я здесь заметил, это то, что родительский класс не сериализован. Тогда, почему это не бросилоNotSerializableException на самом деле это показывает следующее

Выход

Serial 20
Serial 10

Кроме того, выход отличается отSerialization а такжеDe-serialization, Я только знаю, что это потому, что родительский класс не реализованSerializable, Но, если кто-нибудь объяснит мне, что происходит во время сериализации и десериализации объекта. Как это меняет значение? Я не могу понять, также я использовал комментарий в моей программе. Так что, если я ошибаюсь, пожалуйста, дайте мне знать.

Ответы на вопрос(3)

Ваш ответ на вопрос