• 封装


    在以面向过程的思维来解决问题时,我们需要分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。

    如在这个场景中:“汤姆和玛丽把一只大象往一个冰箱里面装”。需要按照以下步骤来做:

    1、汤姆或玛丽打开冰箱门。

    2、汤姆和玛丽把大象装进冰箱里。

    3、汤姆或玛丽关闭冰箱门。 

    可以看到,大象是被汤姆和玛丽装进冰箱里的。那能不能用其他方式把大象装进冰箱里呢?或者说能不能就让冰箱自己装就行?而对于汤姆和玛丽来说,他们根本不用关心是谁负责去装,他们只管提供要装的东西即可。

    此时可以回顾下类和对象的一些概念,类的成员中有属性和方法。那么我们可以将上面装大象的具体步骤交给某个对象去处理,所以现在定义一个冰箱的类,其内部成员有:品牌名(属性)、开门(方法)、关门(方法)、装东西(方法)。

    现在把它的4个方法进行实现:

    开门(私有):方法中的逻辑只管负责开门

    关门(私有):方法中的逻辑只管负责关门

    装东西(公共):1、调用自己的开门方法,2、装东西具体操作,3、调用自己的关门方法

    从上面的解决方案中,将原本装大象的具体步骤交给了冰箱类自己去处理。那么对于汤姆或玛丽对象来说,他们只需要有一个冰箱的对象实例即可,然后把要装的东西交给冰箱对象实例的公共方法【装东西】就行,且自己完全不必关心冰箱是怎么开门、装东西、关门的,只关心冰箱的公共方法【装东西】反回给自己的结果是什么。(如果将这种【面向对象】的思想换种思维场景的话,就相当于你去饭店点了一份蛋炒饭,做一份蛋炒饭是厨师的职责,而你只管吃就行。但是在【面向过程中】你要吃一份蛋炒饭得自己准备材料,然后自己亲自下厨)

    所以可以将【封装】理解为:将具有相同特征的数据和方法组合包装到单个单元中。

    而这个单元就是“类”,所以一个类是封装后的产物。属性和方法属于类的成员,它们是构成一个对象的主要部分,如果没有了这两样东西,那么对象也没什么存在意义了。

    在冰箱类中有自己的私有和公共方法,隐藏了应该隐藏的内容,并使可见的内容可见,这叫成员的访问权限。

    由此可见,封装目的是:

    1、 减少程序间的耦合。

    2、 类内部的结构可以自由修改。

    3、可以对成员变量进行更精确的控制。

    4、隐藏信息,实现细节。

    这就是【面向对象】思想中的特征之一:封装

  • 相关阅读:
    Writing and deploying a custom report in Visual Studio for Dynamics 365 /PowerApps
    Integrating Dynamics 365 CE with PowerApps
    Creating a console application to import data to Dynamics 365 / Power Apps
    DNS仍然是整个互联网中最脆弱的一环
    域名解析TTL值设置为多少合适?
    DNS TTL 字段就是骗你的
    DNS域名轮询业务监控
    域名到站点的负载均衡技术一览
    nginx+iis实现负载均衡
    用Node.js基于Express框架重写博客程序,从此告别ASP.NET。
  • 原文地址:https://www.cnblogs.com/aleon/p/11401160.html
Copyright © 2020-2023  润新知