黑马程序员技术交流社区

标题: 关于序列化问题 [打印本页]

作者: 如远行客    时间: 2013-12-31 11:44
标题: 关于序列化问题
本帖最后由 如远行客 于 2013-12-31 20:50 编辑

请问可序列化的类是不是不能被继承??

作者: 卖火柴    时间: 2013-12-31 11:56
C#通过关键字sealed可以申明一个类型不可被继承,设计中应该为所有不被作为基类的类型添加sealed关键字,以避免各种来自继承的易产生的错误 .

继承是面向对象思想中非常重要的一个部分,在各种面向对象的语言中都有实现,继承能够带给程序灵活性和可扩展性。但同时继承也存在一些问题,在设计一个会被继承的类型时,往往需要反复斟酌考虑再三,下面是常见的一些类型被继承时容易产生的问题:
· 为了让派生类型可以顺利地序列化,非叶子类需要实现恰当的序列化方法。
· 当非叶子类实现了ICloneable等接口时,意味着所有派生类被迫需要实现接口中的相同方法。
· 非叶子类的构造方法不能调用虚方法,也不应该把this指针传递给其他对象和方法。
设计一个可以被继承的类型相对复杂得多,而且更容易产生不能预计的问题。所以C#提供了一个关键字用以申明类型不可被继承:sealed。任何被sealed修饰的类将不能被继承,C#编译器将在编译阶段保证这一机制。
设计时任何没有派生需要的类型都应该被显式地添加sealed关键字,这是避免由继承带来不可预计问题的最有效办法。
作者: 王子斌    时间: 2013-12-31 16:50
序列化主要目的是保存对象的状态,以便可以在需要时重新创建对象。相反的过程称为反序列化。 保证被继承类也能序列化就可以了
作者: з︶_伱眼裏    时间: 2013-12-31 19:38
序列化后就是单纯的数据呈现形式了,是运行时的一个概念。而继承的是另一个概念,是在编译过程中的体现。
作者: 一席倾城    时间: 2013-12-31 20:12
其主要目的是保存对象的状态,以便可以在需要时重新创建对象。相反的过程称为反序列化。 保证被继承类也能序列化就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2