请教c#/vb.net高手,为什么.net里面会有sealed inheritable这两个修饰符?
我知道它的意思是不可继承,但是为什么要规定它不可继承呢,如果可以继承用户也许把它继承后还可以增加点什么功能,如果用户继承它没有什么用,用户自然不会继承,那还有什么必要用这...
我知道它的意思是不可继承,但是为什么要规定它不可继承呢,如果可以继承用户也许把它继承后还可以增加点什么功能,如果用户继承它没有什么用,用户自然不会继承,那还有什么必要用这两个修饰符?总之觉得多余。
展开
4个回答
展开全部
你只从使用者的角度去考虑,当然觉得没有必要。
如果是类的创建者呢? 创建一个类的时候如果不想被继承(因为天气不好,心情不好,打牌输钱了等等原因),这时候这个修饰符就有用了。
如果是类的创建者呢? 创建一个类的时候如果不想被继承(因为天气不好,心情不好,打牌输钱了等等原因),这时候这个修饰符就有用了。
追问
有意思,不过既然这是在探讨技术问题,可不可以说点技术上的必要性?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己编写的代码自己用,讨论是否使用sealed没什么意义
但当自己开发的库、类是让别人用的,就有必要用到sealed了
密封类可以防止被篡改,重写其中的成员,使效果符合预期;
同时用sealed修饰的类效率上来说稍微比非sealed高,因为减少了编译器的检验。
但是否使用密封类,在一定程度上只是一种标准化的思维,就好像开发项目用到三层架构、mvc、工厂模式或者其他架构,使用架构只是一种规范化、条理化的体现,本身它并不是必要的,只是面向对象编程思想的一部分。
但当自己开发的库、类是让别人用的,就有必要用到sealed了
密封类可以防止被篡改,重写其中的成员,使效果符合预期;
同时用sealed修饰的类效率上来说稍微比非sealed高,因为减少了编译器的检验。
但是否使用密封类,在一定程度上只是一种标准化的思维,就好像开发项目用到三层架构、mvc、工厂模式或者其他架构,使用架构只是一种规范化、条理化的体现,本身它并不是必要的,只是面向对象编程思想的一部分。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举个列子,别人给你的软件开发插件的时候,你希望他继承你的最底层的东西吗,你只需要给他封装一个模块让他去实现就好了
追问
为什么不给继承呢,最底层的object都让继承了。
追答
一个开发插件的人把父类全部继承了,不是可以随便改变这个系统了?
别人放一个木马上去不久悲剧了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有些东西部是最底层但也不能随便集成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询