面向对象的三大特征–封装

面向对象的三大特征–封装

封装,继承与多态

封装特征:
实际工作中很多的成员不方便为对象之外的访问或者操作的,所以需要限定以下是否可以操作成员。
封装特性就是对于成员操作进行限制的保护性措施!

面向对象的封装分为三个级别:
私有化封装 OK
受保护的封装(暂时不讲,在继承章节讲解)
公共的封装 OK

对象/类成员的访问:
1.当前类/对象内部访问 (在类的结构内部)
2.类和对象的外部访问 (在类的结构外部)
3.类和对象的子类/子对象的访问(在类的结构外部,在子类/对象的内部)

私有化封装:
方法:在成员属性或者方法名称之前,添加双下划线,就可以私有化成员。
特征:私有化的成员属性和方法,无法在类/对象的外部访问;私有化成员仅允许在类/对象的内部访问

公共的封装:
方法: 任何成员在没有进行私有化操作的时候默认都是公共的封装。
特征: 公共的封装成员属性和方法,在任何位置都可以被访问。

python封装的迷幻~:(了解,但是不允许使用)
其实python没由实现和其他语言一样的面向对象封装策略(还不是很完备)

私有化封装采用了name mangling(改名) 的策略实现的私有化操作。并不是真正的私有优化!
改名策略:将原有成员属性或者方法名 修改为 _类名__成员名

 

1.封装的特性实例1

 1 #封装的特性实例1  2 #声明一个人类  3 class Human:  4 #成员属性  5 name = '张三'#允许别人使用  6 __sex = '' #不允许别人访问  7 age = 18  8 heart = '健康心脏'#不允许别人访问  9 __kidney = '强大的肾脏'#不允许别人访问 10 11 #成员方法 12 #唱歌 13 def sing(self): 14 print('都如艾米发馊拉稀都') 15 16 #吃饭 #允许别人访问 17 def eat(self): 18 print('我最喜欢吃西红柿炒番茄了!') 19 20 #跑步 #不允许别人访问 21 def __run(self):#私有化 22 print('121,121,锻炼身体') 23 24 #聊天(用于测试类.对象的内部访问私有成员) 25 def talk(self): 26 print('我的名字是',self.name) 27 #在类/对象的内部访问私有成员属性 28 print('我的肾脏是非常好的',self.__kidney) 29 #在类/对象的内部访问私有成员方法 30 self.__run() 31 32 33 #实例化对象 34 zs = Human() 35 #print(zs) 36 #输出结果:<__main__.Human object at 0x000001BDBD370F98> 37 38 #访问对象的成员属性和方法-------------------------------------- 39 40 #访问性别 41 #print(zs.sex) 42 #print(zs.__sex) #私有化封装之后,类/对象的外部无法访问! 43 #输出结果:AttributeError: 'Human' object has no attribute 'sex' 44 45 #访问肾脏 46 #print(zs.kidney) 47 #print(zs.__kidney)#私有化封装之后,类/对象的外部无法访问! 48 #输出结果:AttributeError: 'Human' object has no attribute 'kidney' 49 50 #调用唱歌方法 51 #zs.sing() 52 #输出结果:都如艾米发馊拉稀都 53 54 #调用跑步方法 55 #zs.run() 56 #zs.__run()#私有化封装之后,类/对象的外部无法访问! 57 #输出结果:AttributeError: 'Human' object has no attribute 'run' 58 59 #测试类./对象内部访问私有成员 60 zs.talk() 61 ''' 62 输出结果: 63 我的名字是 张三 64 我的肾脏是非常好的 强大的肾脏 65 121,121,锻炼身体 66 '''

 

2.封装的特性实例2

 1 #封装的特性实例2  2 #声明一个人类  3 class Human:  4 #成员属性  5 name = '张三'#允许别人使用  6 __sex = '' #不允许别人访问  7 age = 18  8 heart = '健康心脏'#不允许别人访问  9 __kidney = '强大的肾脏'#不允许别人访问 #根据改名策略 将属性修改为 _类名__属性名 ->_Human__kidney 10 11 #成员方法 12 #唱歌 13 def sing(self): 14 print('都如艾米发馊拉稀都') 15 16 #吃饭 #允许别人访问 17 def eat(self): 18 print('我最喜欢吃西红柿炒番茄了!') 19 20 #跑步 #不允许别人访问 21 def __run(self):#私有化 22 print('121,121,锻炼身体') 23 24 #聊天(用于测试类.对象的内部访问私有成员) 25 def talk(self): 26 print('我的名字是',self.name) 27 #在类/对象的内部访问私有成员属性 28 print('我的肾脏是非常好的',self.__kidney) 29 #在类/对象的内部访问私有成员方法 30 self.__run() 31 32 33 #实例化对象 34 zs = Human() 35 36 #访问私有化属性--肾脏 37 #print(zs.kidney) 38 #输出结果:AttributeError: 'Human' object has no attribute 'kidney' 39 #print(zs.__kidney) 40 #输出结果:AttributeError: 'Human' object has no attribute '__kidney' 41 42 #知晓改名策略之后,可以访问私有成员(严禁任何人使用该方法访问私有成员) 43 print(zs._Human__kidney) 44 #输出结果:强大的肾脏 45 zs._Human__run() 46 #输出结果:121,121,锻炼身体

 

转载于:https://www.cnblogs.com/lws865/p/10851459.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100929.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • UART介绍「建议收藏」

    UART介绍「建议收藏」1.概述UART,UniversalAsynchronousReceiver-Transmitter,通用异步收发器;串口:在嵌入式里指的是UART口,常用TTL电平即3.3V或者5.0V;COM口:在台式机上常用的口,DB9那种接口,接口协议只有两种RS232和RS485;RS232电平即负逻辑电平,定义+5V~+12V为逻辑0,-5V~-12V为逻辑1。…

  • kafka删除topic消息的四种方式[通俗易懂]

    kafka删除topic消息的四种方式[通俗易懂]方法一:快速配置删除法(简单粗暴,如果这个主题有程序还在消费都,此时KAFKA就gameover)1.kafka启动之前,在server.properties配置delete.topic.enable=true2.执行命令bin/kafka-topics.sh–delete–topictest–zookeeperzk:2181或者使用kafka-manager集群管理工具删除注意:如果kafka启动之前没有配置delete.topic.enable=true,topic只会标记

    2022年10月16日
  • SqlParameter CommandType.Text CommandType.StoredProcedure;[通俗易懂]

    SqlParameter CommandType.Text CommandType.StoredProcedure;[通俗易懂]publicintselect_for_updatexulie(Model.tiaominfotm){CommandTypect=CommandType.Text;stringsql=”select条目IDfrom作品条目表where作品ID=@作品ID”;SqlParamet…

  • phpstorm新版激活码_在线激活[通俗易懂]

    (phpstorm新版激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 加密门禁卡复制

    加密门禁卡复制本文主要是针对一下加密门禁卡解密复制问题。最近发现补一张要50,成本的话白卡2块钱一张,读卡器可以白嫖也可以24多买一个不带壳pn532模块。一.卡类型IC卡是智能卡的总称。普通IC卡,0扇区不可以修改,其他扇区可反复擦写,我们使用的电梯卡、门禁卡等智能卡发卡商所使用的都是M1卡,可以理解为物业发的原卡。UID卡普通复制卡,可以重复擦写所有扇区,主要应用在IC卡复制上,遇到带有防火墙的读卡器就会失效。CUID卡可擦写防屏蔽卡,可以重复擦写所有扇区,UID卡复制无效的情况

  • CSDN第一篇博客日记

    CSDN第一篇博客日记CSDN注册很久了,但一直都没来弄,因为开始刚刚学C和C++,许多的东西进来看不懂,觉得这还不是我的一片天地,而转眼又过了两年了,现在的我已经是大二快读完了,我学的是信息与计算科学专业,学了C和C++,现在正在学习数据结构,感觉有点难,看不懂~ 有个时候碰到问题总是自己不能解决,在QQ问问里和百度里搜吧答案找一个只能是一个,过后又忘记了,想把自己的问题以及学习过程记录下来,也想把自己得到的好的解

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号