假设serializeBanana2()和deserializeBanana2() 方法已经给出并且都是正确的使用JAVA 序列化机制的方法:
看以下代码:import java.io.*;class Food{
Food(){
System.out.print("1");
}
}
class Fruit extends Food implements Serializable{
Fruit(){
System.out.print("2");
}
}
public class Banana2 extends Fruit{
int size=42;
public static void main(String [] args){
Banana2 b = new Banana2();
b.serializeBanana(b);  //assume correct serialization
b=b.deserializaBanana2(b);//assume correct
System.out.println("restored "+b.size+" ");
}
//more Banana2 methods
}请问结果是什么:
答案是  121 restored 42
请高手帮忙分析一下,好么?

解决方案 »

  1.   

    serializeBanana2()和deserializeBanana2() 方法的实现能发出来看下吗?
      

  2.   

    首先在main函数中的Banana2 b = new Banana2(); 句,要先调super()(即Fruit的构造函数,Fruit又调用super()(即又调了Food的构造函数)),这样就打印出了1 2 ,然后序列化,接着反序列化,反序列化时由于Food没有实现 Serializable 所以要调用它的构造函数,这样就又打印出了一个1,反序列化后b实例变量size就和之前的一样,所以打印restored 42