Duvida construtor

saida 121 restored 42
Porque ele não imprime 1212 restored 42???

package certificacao;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Food {
Food() {
System.out.print(“1”);
}
}

class Fruit extends Food implements Serializable {
Fruit() {
System.out.print(“2”);
}
}

public class S101 extends Fruit {

int size = 42;

public static void main(String[] args) {
	S101 b = new S101();
	b.serializeBanana2(b); // assume correct serialization
	b = b.deserializeBanana2(b); // assume correct
	System.out.println(" restored " + b.size + " ");
}

private S101 deserializeBanana2(S101 c) {
	
	try {
		
		FileInputStream fs = new FileInputStream("Forest.ser");
		ObjectInputStream os = new ObjectInputStream(fs);
		c = (S101) os.readObject();
		os.close();
		
		
	} catch (Exception e) {
		e.printStackTrace();
		System.out.println("erro na deserializeBanana2");
	}
	return c;
}

private void serializeBanana2(S101 f) {
	
	try {
		FileOutputStream fs = new FileOutputStream("Forest.ser");
		ObjectOutputStream os = new ObjectOutputStream(fs);
		os.writeObject(f);
		os.close();
		
	} catch (Exception ex) {
		ex.printStackTrace();
	}

}

}

Porque na desserialização, somente é invocado o construtor da classe pai não serializable.

Como na serialização a classe Fruit foi serializada, na desserialização não será necessário invocar seu contrutor porque a classe foi serializada (salva) no arquivo, o mesmo não ocorre com a classe Food, como ela não foi serializada, na desserialização seu construtor será invocado.

Valeu martins