




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
访问权限控制 访问权限控制概述private默认访问权限protectedpublic访问比较再论函数覆盖 1 访问权限控制概述 访问权限控制 accesscontrol在面向过程的语言中 基本上没有这个概念一个函数可以访问所有的全局变量以及其中所有的局部变量对于其它函数中的局部变量通通不能访问控制的精度比较差 2 访问权限控制概述 面向对象的基本思想之一是封装实现细节并且公开接口Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限 从而只向使用者提供结构 但隐藏实现细节访问权限修饰的对象类类的成员变量类的成员函数不能用来修饰局部变量 3 访问权限控制的修饰符 Java语言中的访问权限控制分为4种级别private 私有级别默认级别 没有修饰符protected 受保护级别public 公开级别 4 private 私有级别最严格的访问控制允许访问的范围最小可以修饰成员变量和成员函数但是不能修饰类因此 以下代码不能通过编译privateclassPrivateClassDemo 5 private 声明为private的成员只能在本类的成员函数中访问其它类中均不能访问其它类包括 同一个包中的类子类无关的任何类 6 private成员 大多数实例变量都是private的然后提供public的getter setter函数大多数成员函数都不是private的静态成员常量一般都是public的 7 默认访问权限 默认 不使用任何访问权限修饰符例如 声明成员变量如下Stringname 则成员变量name具有默认的访问权限访问范围本类的成员函数可以访问与该类在同一个包中的类也可以访问包访问权限 8 默认访问权限 要访问类A的具有默认访问权限的成员则访问者类B要么就是类A本身要么与类A属于同一个包如果类B是类A的子类但与A不属于同一个包则依然不能访问只看包 与继承无关 9 想让子类访问 如果想让不同包中的子类访问则不能使用默认访问权限可以使用protected或public修饰符 10 protected 受保护的访问范围 本类的成员函数同一个包中类的成员函数所有子类的成员函数protected只能用来修饰成员不能用来修饰类这一点与private相同只有public和默认的可以修饰类 11 protected与默认访问权限 protected比默认访问权限的访问范围要宽protected 默认权限 不同包中的子类 12 public 公开的可以修饰 类成员变量成员函数访问范围最宽任何类的成员函数均可访问 13 何为访问 对于不同的访问目标 访问具有不同的含义有如下几种访问情况 访问类访问成员变量访问成员函数访问构造函数 14 访问类 使用类的名称即为访问类例如 声明该类的变量 句柄 类cn peter bookstore Book修改Book java去掉publicclassBook中的public重新编译Book java与TestBook javaBook java可以通过编译 也能正常运行TestBook java产生编译错误 15 编译错误 src TestBook java 4 cn peter bookstore Book在cn peter bookstore中不是公共的 无法从外部软件包中对其进行访问cn peter bookstore Bookb src TestBook java 5 cn peter bookstore Book在cn peter bookstore中不是公共的 无法从外部软件包中对其进行访问b newcn peter bookstore Book 2错误 16 使用导入 如果使用导入而不是直接使用类的全名重新编译TestBookWithImport java也得到相应的编译错误 17 编译错误 src TestBookWithImport java 2 cn peter bookstore Book在cn peter bookstore中不是公共的 无法从外部软件包中对其进行访问importcn peter bookstore Book src TestBookWithImport java 6 找不到符号符号 类Book位置 类TestBookWithImportBookb newBook 9787111213826 Java编程思想 第4版 src TestBookWithImport java 6 找不到符号符号 类Book位置 类TestBookWithImportBookb newBook 9787111213826 Java编程思想 第4版 3错误 18 编译错误分析 首先 该类没有使用任何修饰符因此该类具有默认访问权限只有本类或同包中类的函数才能访问访问者TestBook与被访问者Book既不是同一个类 也不在同一个包中因此产生编译错误访问类 声明类的变量 句柄 或调用该类的构造函数即使用该类的名称 19 重要性 可以使用类的名称具有非常重要的地位如果不能使用类的名称则不能访问类的成员变量调用类的成员函数调用类的构造函数声明类的变量创建类的对象 20 访问成员变量 这个比较容易理解通过类 静态成员变量 或对象 实例变量 来对变量进行访问访问变量读取变量的值给变量赋值 final成员变量除外 21 访问成员变量 类Book的所有成员变量都是private修饰的因此只有类Book本身的成员函数可以访问这些成员变量main 也是该类的成员函数可以访问这些成员变量吗 虽然main 也是类Book的成员函数但是由于该函数是静态的而类Book所有的成员变量都是非静态的因此main 不能直接访问这些成员变量可以先创建对象 然后通过对象来访问 22 其它类的main 函数呢 其它类的main 函数即使可以创建Book类的对象也不能通过对象来访问这些成员变量因为这些成员变量是private修饰的只有类Book的成员函数才可以访问此处 成员函数包括静态成员函数 通过本函数中的局部变量来访问 非静态成员函数 通过this句柄来访问 23 访问成员函数 这个比较容易理解通过类 静态成员函数 或对象 非静态成员函数 来对成员函数进行访问访问函数即调用该函数运行该函数的函数体 24 访问构造函数 构造函数是特殊的成员函数访问构造函数是很常见 很重要的访问构造函数的方式 通过new来调用构造函数从而创建对象构造函数的访问权限可以是private默认protectedpublic 25 构造函数的访问权限 大多数类的构造函数都是public的以使得任何类均可创建该类的对象例如 类String有13个构造函数均为public访问权限如果只想让同一个包中的类可以创建对象则构造函数可以不使用任何修饰符这种情况不多因为不同包中的子类无法调用这个构造函数导致的结果是无法构建子类的对象因为子类对象的构造过程中一定会调用父类的构造函数 26 构造函数的访问权限 构造函数也可以是private访问权限这样除该类外任何类都不能创建该类的对象这种情况比较特殊 也比较少例如 类System查看该类的源代码 Don tletanyoneinstantiatethisclass privateSystem 27 private构造函数 除了本类之外任何类均不能创建该类的对象为什么呢 类System所有的成员变量和成员函数都是静态的因此根本没有必要创建该类的对象没有必要性而把构造函数设置成private访问权限也就杜绝了创建对象的可能性 28 private构造函数 类似的例子还有Math 29 比较 四种访问权限访问权限的修饰目标访问权限的访问范围 30 访问权限的修饰目标 31 访问权限的访问范围 32 再论函数覆盖 函数覆盖时权限控制方面有什么要求呢 子类在继承父类时可以覆盖父类的函数子类函数的访问权限不能比父类被覆盖函数的访问权限更严格 33 函数覆盖时的权限 如果父类的函数是public则子类的函数别无选择
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业并购交易合同修订及调整协议
- 离婚双方无子女财产分配及子女监护权约定
- 安全员证续期网络考及答案
- 2025年大学瑜伽课程题库及答案
- 基于自适应学习系统的计算机课程教学研究
- 2025年新能源产业质量追溯体系与产业链协同创新报告
- 展示台 饲养达人评选会说课稿-2025-2026学年小学劳动粤教版劳动与技术四年级-粤教版(劳动与技术)
- 城区建筑竞赛方案设计案例
- 建环专业考试题及答案
- 2025年数学几何竞赛真题及答案
- 2025年贵州省凯里市辅警招聘考试题题库(含参考答案)
- 大数据产业课件
- 潮汐能发电站课件
- 国际化跨国经营中的伦理问题概述
- 2025-2026学年度武汉市部分学校高三年级九月调研考试 语文试卷(含标准答案)
- 2025年禁毒知识竞赛试题及参考答案
- 初二入团考试内容及答案
- 2025至2030年中国交通节能服务行业发展潜力分析及投资战略咨询报告
- 针灸科感控知识培训课件
- 微生物学讲课文档
- 2024新版2025秋人教版二年级艺术造型美术上册全册教案教学设计(含大单元教学设计)
评论
0/150
提交评论