首页 > 其他分享 >封装、权限修饰符、封装的案例

封装、权限修饰符、封装的案例

时间:2024-11-23 11:56:23浏览次数:8  
标签:封装 修饰符 savelog 权限 方法 类中

1.面向对象的三大特征

其中继承和多态放在后面讲,今天只聊封装

.

2.封装的介绍

举例

如果要我们处理一堆学生的数据,我们可以直接设计一个类,将我们需要处理的数据封装到类当中变为成员变量,然后我们直接创建两个对象,再将数据封装到对象中即可

.

3.封装的好处

1.便于我们维护数据。例如刚才处理学生数据,如果直接定义一大包变量十分臃肿

2.方便使用者使用。使用者无需关心内部实现,只要知道如何使用就行

.

举例:如同一辆车,使用者完全不需要知道汽车内部如何构建运作,使用者只需要知道怎么开车就行

.

4.封装的设计规范

依旧拿汽车举例,商家会把引擎,发动机给使用者看吗,商家只会把拉杆,方向盘暴露出给使用者,而其他没必要的东西都会用壳子包裹隐藏,这就是合理隐藏,合理暴露


.

举例:

如上图,savelog方法是完全服务于call方法的,打完一次电话就会记录,那么savelog方法就应该被隐藏,为什么? 如图

我们如果没有隐藏savelog方法,那么使用者就有可能直接调用savelog方法而略过call方法,但是savelog是服务于call方法的,你连电话都没打,你记录什么?因此,savelog需要被隐藏。但该怎么隐藏呢?

我们只需要把public改成private即可,修改完以后,savelog就只能在Phone这个类里使用,而无法在测试类使用

.

6.权限修饰符

权限修饰符可以修饰成员,即成员变量和成员方法

不同的权限修饰符,所修饰的成员的权限访问大小不同

.

1.private

修饰的成员的访问权限只能在同一个类中 如图

age只能在Student类中使用,无法在测试类中调用,而name可以在测试类中调用


当我们在Student类中调用age没有报错,并且可以在测试类中使用

.

2.(defalut)

修饰的成员的访问权限只能在同一个类中,同一个包中

(defalut) 是默认权限,并不是在变量前面写这个,而是什么都不写 如图

当Student和测试Student同在project包中,访问没问题。当把测试类放到test的包中,访问就报错了

.

3.protected

修饰的成员的访问权限在同一个类中,同一个包中,不同包的子类中

这个之后再说

.

4.public

任意位置,但别太过分,别跨模块就行(day7和day8不同模块)

.

7.案例

如图

年龄为-28明显是错误的,但程序这里不报错,因此,为了数据的安全性,我们必须私有个人信息

错误的数据进不来了,但正确的数据也进不来了,怎么办?先别急,这里我们需要学习两个新的方法

.

针对私有的成员变量,提供对应的set xxx 和get xxx方法

set:设置

get:获取


如图,我们写了一个setAge方法,在该方法里进行判断年龄是否符合常理,符合则给予赋值,否则提示

1000不符合常理,所有就打印了提升,29则给予赋值,没有提示

.

写完setAge还没有结束,我们会发现现在只是给用户提供了设置年龄的渠道,但用户现在没有获取年龄的渠道,无法拿着数据进行其他操作

setAge仅能用于设置,并没有数据返回给setAge,无法用来操作

所以我们还要写一个getAge方法


return在哪个方法,返回的值就返回给哪个方法,所以getAge收到返回值,再来一个变量接收数据即可

标签:封装,修饰符,savelog,权限,方法,类中
From: https://www.cnblogs.com/zhishi6/p/18564277

相关文章

  • podman 无根用户分配系统CPU、内存等系统资源,提示cgroup相关权限不足
    问题:在使用Podman以无根用户(rootless)模式创建容器时,如果遇到分配系统CPU等资源时提示cgroup权限不足,这是因为无根用户没有直接访问cgroup相关资源的权限。以下是一些解决方法(目前采用的办法3临时解决,,主要是更改系统目录权限sudochown-R$USER:$USER/sys/fs/cgro......
  • win11卸载软件提示没有权限
    如题,win11卸载某软件,提示:没有足够的权限卸载,请与系统管理员联系!解决方法:1.Win键+R键,打开"运行"对话框。输入regedit并按Enter键来启动注册表编辑器。2.打开目录:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System在System键下找到名......
  • Java 中的访问权限
    文章目录前言一、Java中的四种访问权限级别1.public(公共访问权限):2.protected(受保护访问权限):3.默认访问权限(也称为包访问权限或友好访问权限):4.private(私有访问权限):二、访问权限的重要性总结前言在Java编程中,访问权限的控制是非常重要的一部分,它决定了类、方法......
  • DzzOffice网盘插件修复无权限的用户可以查看文件夹信息问题
    问题描述:在我的网盘页面,即访问域名://index.php?mod=explorer#home&fid=fid值,通过修改fid值可以使文件夹右侧信息显示非本人的。修复解释:在查询当前文件夹信息前先检查文件夹是否是我的网盘里的,如果是,在判断当前文件夹是否是当前用户的。修复方法:文件:dzz/explorer/dynamic......
  • 【SSM框架探索】第二篇——SSM整合与表现层数据封装优化
    目录1SSM整合配置问题导入1.1SSM整合流程1.2.2Spring整合Mybatis1.2.3Spring整合SpringMVC2.1数据层开发(BookDao)2.2业务层开发(BookService/BookServiceImpl)2.3表现层开发(BookController)3.1Spring整合Junit测试业务层方法3.2postman测试表现层接口问......
  • Python入门-面相对象——class(类)、封装、继承、多态、类型注解
    面向对象面向对象就是设计一个类,基于类创建对象,并使用创建出来的类完成具体的工作面向对象的三大特性:封装、继承、多态面向对象基本概述:属性:名词,用来描述事物的外在特征的,例如:姓名,性别,年龄,身高,体重...行为:动词,表示事物能够做什么,例如:......
  • Linux文件目录权限与特殊权限
    18.文件与目录权限文件访问者分类(朋友圈)文件拥有者文件所属组文件的other文件类型d:目录文件-:普通文件(文本,源代码,可执行程序,第三方动静态库)l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕等串口设备)s:套接口文件......
  • 【XYFrame unity框架使用文档】封装unity小框架工具集 —— XYFrame
    文章目录XYFrame介绍优点获取框架源码引入的第三方插件作者信息技术交流群反馈企鹅裙画饼使用文档导入文件目录启动1、单例模式不继承MonoBehaviour的单例模式基类继承MonoBehaviour的单例模式基类2、Mono管理器3、事件管理系统4、工具类封装unity协程工具,避免GC(垃圾回......
  • 10.Python 对象(封装、继承、多态、类型注解)
    一、初始对象在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的在程序中设计表格,称之为设计类(class)classStudent:name:None在程序中打印生产表格,称之为创建对象stu1=Student()stu2=Student()在程序中填写表格,称之为对象属性赋值......
  • 【vue+printJs】前端打印, 自定义字体大小, 自定义样式, 封装共享样式
    效果示例思维导图目录1,基本使用1,依赖下载2,页面导入3,修改字体大小(可行但不推荐)2,自定义样式,字体大小1,修改字体大小(推荐)2,自定义样式3,封装共享样式3,去除页面页脚内容4,测试案例demo,直接cv可用5,print-js的其他参数说明1,基本使用1,依......