可序列化可繼承
回答
是的。這源於Java中的繼承概念。由於A是可序列化的並且B擴展了A,因此B是序列化的。
請注意,A和B的所有非靜態非瞬態字段都必須包含Serializable對象,否則在嘗試序列化它們時會在運行時出現NotSerializableException。
是的,如果超類實現serializable,那麼子類也是如此。
如果一個類是可序列化,那麼所有子類序列化。但是如果你想阻止其超類Serializable的子類是可序列化的,那也是可能的。
如果你想防止再使用
NotSerializableException - 當實例需要具有序列化接口時拋出。序列化運行時或實例的類可能會引發此異常。爭論應該是類的名字。
請參考官方文檔 - http://docs.oracle.com/javase/6/docs/api/java/io/NotSerializableException.html
通過以這種方式使用它,你可以完成這個任務
private void writeObject(ObjectOutputStream out) throws IOException {
throw new NotSerializableException(「Not today!」);
}
private void readObject(ObjectInputStream in) throws IOException {
throw new NotSerializableException(「Not today!」);
}
如何子類是序列化,但父類是不
如果一個Sub類是可序列化的,那絕對不意味着它的超類也是可序列化的。當一個子類被反序列化時,超類的無參數構造函數將運行。
接口具有Java編程語言 另一個非常重要的作用。接口不是類層次結構的一部分,儘管 它們與類結合使用。 Java編程語言 不允許多重繼承(本課中稍後討論繼承 ),但接口提供了一種替代方法。
在Java中,一個類只能從一個類繼承,但它可以實現多個接口的 。因此,對象可以有多種類型: 它們自己的類的類型以及它們實現的所有接口的類型。這意味着如果一個變量被聲明爲接口的類型,它的值可以引用從實現該接口的任何類中實例化的任何對象 。在本課稍後部分討論的 中,標題爲「使用 接口作爲類型」的部分。
我想,如果你有一個函數foo
它得到(Serializable ptr)
你的意思是,你可以用Class B
實例調用它因此,答案是肯定的,那就是思想。
此外,您可以重寫A(祖先)實現。
通過基類實現的所有接口是由他們的派生類繼承。不只是可串行化。
我同意Serializable-ness是繼承的,但有問題(儘管很少),偶爾的工具無法識別該事實。所以即使這不是必需的,我還會額外努力將子類聲明爲實現Serializable。
- 1. 可序列化繼承
- 2. IllegalAccessException - 繼承不可序列化的對象的序列化
- 3. 如何使一個繼承可序列化類的類不可序列化?
- 4. C#序列化/繼承
- 5. 反序列化繼承類
- 6. DataContract序列化(繼承)
- 7. 繼承列表和序列化
- 8. 反序列化繼承的ArrayList到繼承名單<>
- 9. PHP使類繼承可繼承
- 10. WCF - probem與序列化繼承類型
- 11. 繼承對象的XML反序列化
- 12. GSon沒有繼承序列化正確
- 13. 傑克遜繼承和反序列化
- 14. C#XML序列化和涉及繼承
- 15. WCF繼承/多態性和序列化
- 16. MongoRepository繼承序列化錯誤
- 17. xml序列化和繼承類型
- 18. 反序列化繼承對象
- 19. JSON序列化繼承的模型
- 20. PHP類和繼承,序列化
- 21. 從Canvas類繼承的序列化類
- 22. 序列化繼承與改進類
- 23. 繼承模型的Django序列化
- 24. Java JSON反序列化繼承類
- 25. 使用Mongo C#驅動程序可以反序列化繼承對象
- 26. XML序列化/反序列化的名字和繼承
- 27. JSON序列化繼承列表類屬性不會被序列
- 28. boost ::序列化與不可變的抽象基礎和虛擬繼承
- 29. 從具有屬性類型的接口繼承的可序列化的類
- 30. XSD2Code,是否可以序列化父抽象類的繼承屬性?
'B'不是可序列化的,它從超類繼承實現'Serializable'接口,在Java語義中的IMO。 – 0x90
這在Java [docs](http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html)中明確提到,「*類的序列化是由實現java.io.Serializable接口的類沒有實現這個接口的類將不會有任何它們的狀態序列化或反序列化**可序列化類的所有子類本身都是可序列化的***「 – Lion
@ 0x90 :擴展一個類或實現一個接口可以精確地定義一個*是* *的關係。所以是的,B *是一個* Serializable。 –