Hello,大家好,我是乔乔白术,今天是带来面向对象的第三篇内容。今天带来的是面向对象中的封装,想了解之前的内容,可以点击上面的合计,里面就有详细内容。
首先封装是什么?
我们打个例子
你的账号有多少钱?à数据的封装
你的爱好à数据的封装
你的账号是如何拥有这么多的钱的à方法的封装
那么为什么封装呢?
封装数据的主要原因就是为了保护隐私
封装方法的主要原因就是为了:隔离复杂度
在编程语言里,对外提供接口(入口),就是函数,成为接口函数,这与接口的概念还不一样,接口代表一组接口函数的集合体。
面向对象的封装有以下的特点:
公有成员是可以公开使用的,即可以在类的内部进行访问,也可以在外部程序中使用。
Python中类的成员函数、成员变量默认都是公开的。
私有成员在类的外部不能直接访问,一般在类的内部进行访问和操作,或者在类的外部通过调用
对象的公有成员方法来访问,这是类的封装特性的重要体现。
__xxx:以两个下划线开头,表示类的私有成员,一般只有类对象自己能访问,子类对象也不能直
接访问该成员,但可以通过“对象名._类名__xxx”这样的特殊方式来访问。
封装实质分为两个层面,但是无论哪种层面的封装,都要对外界提供好访问你内部隐藏内容的接口。
第一种:什么都不做,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装。
第二种: 类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。
私有方法我也在上面讲过了。
例如
class Point:
x = 10
__y = 20
z = 30
def get_x(self):
return self.x
def get_y(self):
return self.__y
def __get_z(self):
return self.z
这就是封装,它看起来会麻烦些,但是也为一些复杂的代码提供了便利,但是一定要注意,python并不会真的阻止你访问私有的属性
目前关于面向对象的内容已经说了三期,我会根据后面的内容做个划分,在两期之内结束面向对象的内容!如果你对此特别感兴趣,可以看一下往期内容,如果遇到什么问题,可以私信博主,或者评论!