父類實現Serializable,子類是否需要實現Serializable

父類實現了Serializable,子類不需要實現Serializable

 相關注意事項
   a)序列化時,只對對象的狀態進行保存,而不管對象的方法;
   b)當一個父類實現序列化,子類自動實現序列化,不需要顯式實現Serializable接口;
   c)當一個對象的實例變量引用其他對象,序列化該對象時也把引用對象進行序列化;
   d)並非所有的對象都可以序列化,至於爲什麼不可以,有很多原因了,比如:
       1.安全方面的原因,比如一個對象擁有private,public等field,對於一個要傳輸的對象,比如寫到文件,或者進行rmi傳輸等等,在序列化進行傳輸的過程中,這個對象的private等域是不受保護的。
      2. 資源分配方面的原因,比如socket,thread類,如果可以序列化,進行傳輸或者保存,也無法對他們進行重新的資源分配,而且,也是沒有必要這樣實現。

 例子:

1,父類實現了Serializable,子類沒有,

父類有int a = 1int b = 2int c = 3

子類有int d = 4int e = 5

序列化子類的時候,d和e會不會被序列化?(答案:會)


2,反過來父類未實現Serializable,子類實現了,序列化子類實例的時候,父類的屬性是直接被跳過不保存,還是能保存但不能還原?(答案:值不保存)


解:父類實現接口後,所有派生類的屬性都會被序列化。子類實現接口的話,父類的屬性值丟失。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章