[英]encapsulation vs abstraction with example [duplicate]
这个问题已经在这里有了答案:
我知道这个问题在互联网上被问过很多次,但这里的例子却与众不同,这使我感到困惑,我在采访中被问到一个关于封装和抽象的问题,例如电视和遥控器或空调或遥控器的真实生活例子,访调员问到了封装和抽象的示例。 有人可以描述这个问题吗?
封装的简单定义:
- 将数据和方法包装到单个单元(称为类)中的方法称为封装。
- 外部世界无法访问数据,只有包装在类中的那些方法才能访问数据。
- 这些方法提供了对象数据和程序之间的接口。
- 防止程序直接访问的这种数据隔离称为数据隐藏。
- 通过封装,可以将对象像黑盒子一样对待,每个对象执行特定任务而无需考虑内部实现。
我认为现在您从我提到的最后一点可以理解电视示例的封装。
我对您的示例的定义是:
电视的功能对您来说是隐藏的,但是电视制造商会为您提供与电视进行交互或进行某种操作的遥控器,从而提供了较高的抽象度。 因此,在观看电视之前,您甚至都不知道信号是如何从天线发出的,并转换成要在屏幕上显示的图片。
您可以看到电视屏幕,按钮,插入位置等。但是您看不到电路,色枪等(这些是数据隐藏的)。
进一步来说:
根据您的示例,由于这两种设备中的封装都提供了与之交互的接口。 举例来说,
powerOn()
按钮。 但是您不知道按下电视或遥控器上的按钮时如何打开电源(“数据隐藏”)。
遥控器中的powerOn()
按钮也是另一个词的抽象,遥控器具有使用电视接口的功能,而细节则被封装隐藏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.