第二天,在面向对象的基础上又学习了封装这个概念,单从字面意思理解,封装就是将一堆东西给封装起来,可是要是真正的理解起来,却是晕头转向,封装到底是做什么的,有什么作用?我用言语还是解释不清楚,但是老师让写那个博客的注册登录,按照老师的模板,却也能了解个一二,具体封装的概念,我还是把从网上看的和老师讲的给总结了下来。
封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,也不能对类中非公共的数据进行操作。这样可以防止外部的干扰和误用。通俗的说就是将零散的数据,封装起来包含在一个类型中,统一管理。比如定义一个商品类型,将与商品有关的名称,价格,库存为私有化,不让外面直接访问,外界如果要访问的话,可以使用set/get方法进行访问
封装的目的:在于将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只须用设计者提供的接口来访问对象。同时减少了程序各部分之间的依赖性,降低了程序的复杂性,由于隐藏了其内部信息的细节,使内部信息不易受到破坏,安全性有了保证,同时也为外界访问提供了简单方便的界面。
封装的主要优点是隐藏不相关逻辑,拿“开车去上班”来说,我们只需要驾驶汽车,不需要关注发动机是怎么驱动汽车前进的,所以驱动汽车前进的逻辑被封装到了类Car的drive方法中。
封装的实现:
约定:p2和p3项目约定,以下划线开头的属性为私有属性
强制:p3中,以双下划綫开头的属性为私有属性
所以,在使用面向对象的封装特性时,需要:
1.将内容封装到某处
2.从某处调用被封装的内容
调用被封装的内容时,有两种情况:
1.通过对象直接调用 (通过对象直接调用被封装的内容)
2.通过self间接调用 (执行类中的方法时,需要通过self间接调用被封装的内容)
封装的好处:
第一:重用;
第二:不必关心具体的实现;
第三:面向对象三大特征之一;
第四,具有安全性!
你可以只关注于使用,而不关心具体的实现。比如
电视机,我们会操作就行了,我才不关心他是怎么实现的呢?内部构造那是生产和设计人员的事情!
比如人类,有手有脚,有眼睛(人类的属性),会跑会吃(人类的行为)我们通过封装把属性和行为(方法)组装起来,形成一个类(人类),我们可让某个人(人类的一个对象)吃饭,跑步,(调用方法),但我们不能让某个人长三只眼睛(就是说我们不应该去直接操作属性),而跑步要用到腿(属性),腿的长短可能决定了跑的快慢(属性影响了方法).封装也确实实现了重用,我们只要为人类创建一个跑方法,以后我们要让张三跑那么就创建一个对象并给他个名子叫张三,然后让他跑.