我知道sealed的作用,当修饰类时让一个类不能被继承,当修饰虚方法时派生类不能再覆盖它。
我知道sealed的好处,就是CLR查方法表变快了。但是我不知道,什么时候使用sealed。不论我以上说的对不对,我想要至少以下问题的回答。比如说,我一个类写好了,一个虚方法抽象方法都没有,且仅用于我的项目,且尚未被继承,有没有必要用sealed修饰类?
还有一个类,有虚方法,但仅用于我的项目,且尚未被继承,有没有必要用sealed修饰类?
我从WinForm或WPF创建自定义控件或元素,覆盖了基类的虚方法MeasureCore。该控件只用于我的项目,且尚未被继承,有没有必要用sealed修饰MeasureCore方法?有没有必要用sealed修饰该类?
更甚者,已知WinForm或WPF的控件提供了众多的虚方法,我创建的自定义控件覆盖并密封所有基类的虚方法,有意义吗?
我知道sealed的好处,就是CLR查方法表变快了。但是我不知道,什么时候使用sealed。不论我以上说的对不对,我想要至少以下问题的回答。比如说,我一个类写好了,一个虚方法抽象方法都没有,且仅用于我的项目,且尚未被继承,有没有必要用sealed修饰类?
还有一个类,有虚方法,但仅用于我的项目,且尚未被继承,有没有必要用sealed修饰类?
我从WinForm或WPF创建自定义控件或元素,覆盖了基类的虚方法MeasureCore。该控件只用于我的项目,且尚未被继承,有没有必要用sealed修饰MeasureCore方法?有没有必要用sealed修饰该类?
更甚者,已知WinForm或WPF的控件提供了众多的虚方法,我创建的自定义控件覆盖并密封所有基类的虚方法,有意义吗?
行。那默认是sealed还是unsealed?默认sealed,等到我发现这个类需要被继承时,去掉sealed关键字。
默认unsealed,等到我那天有兴致了,发现没有任何类继承她,就加上sealed关键字。
同时用sealed修饰的类效率上来说稍微比非sealed高,因为减少了编译器的检验。
比如咱们的静态类在元数据中就是抽象密封类;
咱们的String,Thread都是密封的..你说他们为什么需要密封自然就明白了。