您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

抽象和封装有何不同?

抽象和封装有何不同?

抽象意味着只向对象的客户显示必要的细节

其实就是封装。另请参阅Wikipedia文章的第一部分,以免被封装和数据隐藏所混淆。http://en.wikipedia.org/wiki/Encapsulation_(面向对象的编程)

请记住,仅将您所有的类成员1:1隐藏在属性后就根本不是封装。封装是关于保护不变量和隐藏实现细节的。

这是一篇很好的文章http://blog.ploeh.dk/2012/11/27/Encapsulationofproperties/ 还可以查看该文章链接文章

类,属性和访问修饰符是在c#中提供封装的工具。

您可以进行封装以降低复杂性。

抽象是“识别具有系统变异的通用模式的过程;抽象表示通用模式,并提供了指定使用哪种变异的方法”(Richard Gabriel)。

是的,这是抽象的一个很好的定义。

它们是不同的概念。抽象是完善对象的所有不需要/不重要属性并仅保留最适合您的域的特征的过程。

是的,它们是不同的概念。请记住,抽象实际上与使对象仅适合您的域相反。一般是为了使对象适合领域!

如果您遇到实际问题并提供特定的解决方案,则可以使用抽象来形式化更通用的解决方案,该解决方案也可以解决具有相同通用模式的更多问题。这样,您可以提高组件的可重用性,也可以使用由其他程序员为相同域甚至不同域制作的组件。

.net框架提供的类就是很好的例子,例如列表或集合。这些都是非常抽象的类,您几乎可以在任何地方和许多领域中使用。试想一下,如果.net仅实现了一个EmployeeList类和一个CompanyList,该类只能容纳具有特定属性的员工和公司列表。这样的类在很多情况下是没有用的。例如,如果您必须重新实现CarList的全部功能,那将是多么痛苦。因此,“列表”与员工,公司和汽车无关。List本身是一个抽象概念,可以由其自己的类实现。

接口,抽象类或继承和多态是在c#中提供抽象的工具。

您进行抽象以提供可重用性。

其他 2022/1/1 18:13:38 有459人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶