先解释一下抽象和封装:
    抽象: 抽象就是忽略一个问题中与当前目标无关的那些方面,以便更充分的注意与当前目标有关的部分,抽象不打算了解问题的全部,而是只选择其中的一个部分,抽象包括两个方面:过程抽象和数据抽象。
    封装:就是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
    再做一些说明:
    举例来说明一下,比如相思鸟和乌鸦,我们在抽象时,我们忽略那些比如嘴不一样,而我们只在意它们都是有嘴的:mouth;我们忽略它们羽毛颜色的不一样,而只在意它们的羽毛是有颜色的:color;然后我们**抽象**出嘴、羽毛颜色等特点。
    然后我们通过抽象出的这些特点,将它们**封装**成鸟类Bird,这就是封装。
    在使用时,我们会通过封装出的Bird类来给鸟类的属性赋值,比如bird.mouth=尖嘴,bird.mouth=圆嘴,这样我们又还原出鸟类的不同的特点,这正印证了题主的那句话“**_抽象让我们忽略细节,在不同的层次上处理细节,封装则是填补了抽象留下的空白_**”。

    作者:80岁未成年
    链接:https://www.zhihu.com/question/20266563/answer/63441258
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    来自blog.91zen.com