`

第六章 访问权限控制

阅读更多
2013年6月16日 星期日 11时10分46秒

第六章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。

重构面临的问题: 如何把变动的事物与保持不变的事物区分开来。

public,protected,默认,private。

如何将构件捆绑到一个内聚的类库单元中的问题。java 用package加以控制。

6.1 包:库单元
        需要防止类名称之间的冲突。
        6.1.1 代码组织
                使用package将构件置于同一个组群,同时package chapter6; 必须置于文件中除注释以外的第一句程序代码。
        6.1.2 创建独一无二的包名        
                冲突:如果存在名字冲突时,明确指定要使用的类。
        6.1.3 定制工具类
                        package chapter6;

                        //定制工具类
                     public class Print {
                        public static void print(Object obj){
                                System.out.println(obj);
                        }
                        public static void print(){
                                System.out.println();
                        }
                        public static void printnb(Object obj){
                                System.out.print(obj);
                        }
       
                      }

         6.1.4 用import改变行为
                       

            6.1.5 对使用包的忠告
                可以通过package调试“无法找到特定类”的异常,编译过的代码通常放置在与源代码不同的目录中,但是必须保证JVM使用CLASSPATH可以找到该路径。

       
        
6.2 Java访问权限修饰符
        6.2.1 包访问权限
                取得对某成员的访问权的唯一途径是:
                1.使该成员成为public。
                2.通过不加访问权限修饰词并将其他类放置于同一个包内的方式给成员赋予包访问权,于是包内的其他类也就可以访问该成员了。
                3.通过继承。
                4.提供访问器(accessor)和编译器(mutator)方法(也称get/set方法),以读取和改变数值。
        6.2.2 public:接口访问权限
        6.2.3 private:你无法访问
        6.2.4 protected:继承访问权限
6.3 接口和实现
        访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称为封装。
        访问权限控制将权限的边界划在了数据类型的内部,有两个原因:
                一:设定客户端程序员可以使用和不可使用的界限。
                二:将接口和具体实现进行分离。
6.4 类的访问权限
        如果没能为类访问权限指定一个访问权限修饰符,它就会默认得到包访问权限。

       package chapter6;

        //Soup1和Soup2展示了如何通过将所有的构造器指定为private来阻止直接创建某个类的实例。
        class Soup1{
                private Soup1(){}
                public static Soup1 makeSoup(){
                        return new Soup1();
                }
        }

        //其中Soup2中用到了单例模式(Singleton)
        class Soup2{
                private Soup2(){}
                private static Soup2 sp2=new Soup2();
                public static Soup2 access(){
                        return sp2;
                }
                public void f(){}
        }

        public class Lunch {
                void testPriate(){
                //Soup1 s1=new Soup1();   不能这样创建对象
        }
        void testStatic(){
                Soup1 s1=Soup1.makeSoup();
        }
        void testSingleton(){
                Soup2.access().f();
        }
        }

6.5 总结
        1.设立一些为成员所遵守的界限始终是很重要的。
       
        注意:访问权限控制符专注于类库创建者和该类库的外部使用者之间的关系。这种关系也是一种通信方式。








0
5
分享到:
评论

相关推荐

    访问登记流程v1.0.doc

    第6章 时限控制 6 第7章 衡量 6 第8章 操作程序 6 8.1访问权限申请或分配 6 8.2对访问权限进行审查 6 8.3对访问权限进行批准 6 8.4服务提供者开始提供服务 7 8.5定期检查用户标示符与账户 7 8.6取消访问权 7 8.7用户...

    编程思想下篇

    第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O...

    Thinking in java4(中文高清版)-java的'圣经'

    非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第...

    《C++ 入门》.PDF

    第六章 控制结构 第七张 函数 第八章 数组 第九章 指针 第十章 结构 第十一章 类机制 第十二章 类的作用域和类成员访问 第十三章 派生类 第十四章 派生类的存取权限 第十五章 构造函数和析构函数 第十六章 虚函数与...

    SQL 基础教程

    第6章 使用WHERE子句查询表 第7章 表中数据的排序 第8章 连接查询与集合查询 第9章 子查询 第10章 常用函数 第11章 视图的创建与维护 第12章 插入数据记录 第13章 修改数据记录 第14章 删除数据记录 第15章 权限的...

    数据库系统第4章.pptx

    数据库安全性控制(续) 数据库管理系统安全性控制模型 数据库系统第4章全文共81页,当前为第6页。 存取控制流程 首先,数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别,防止不可信用户使用系统。 然后...

    thinkinjava源码-Thinking-in-Java:ThinkingInJava源代码和练习题

    访问权限控制(18年6月) 第7章 复用类(18年6月) 第8章 多态(18年7月) 第9章 接口(18年10月) 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 ...

    Kali渗透测试技术实战

    第一章 引言 EC-Council Certified Ethical Hacker (EC CEH,伦理...第六章渗透测试生命周期 第七章侦查 第八章扫描 第九章渗透 第十章维持访问 第十一章报告和模板 附录AtribalChicken工具 附录BKali渗透测试工具集

    数据库第六章数据库设计习题.doc

    第六章 数据库设计 一、单项选择题 1.数据流图是数据库设计中 D 阶段的工具。 A.概要设计 B.可行性分析 C.程序编码 D.需求分析 2.在数据库设计中,将E-R图转换成关系数据模型的过程属于 B 阶段。 A.需求分析 ...

    java8基础学习教程培训配套代码.rar

    第6章[课程代码] 异常的捕获及处理,doc 第7章[课程代码] Eclipse开发工具doc 第8章[课程代码] Java新特性.doc 第9章[课程代码]多程,doc 第10章[课程代码] Java常用类库,doc 第11章[课程代码] Java lO编程doc 第12章...

    第四章作业答案1

    第四章6、自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。强制存取控制方法:每

    网络安全管理规范.doc

    目 录 目 录 2 第一章 总则 4 1.1 范畴 4 1.2 目标 4 1.3 原则 4 1.4 制定与...19 第六章 安全事件的处理 20 6.1 安全事件的定义 20 6.2 安全事件的分类 20 6.3 安全事件的处理和流程 21 6.4 安全事件通报制度 23 第

    数据库系统概论第5版课后答案第4章-数据库安全性(1).doc

    第4章 数据库安全性 1. 什么是数据库的安全性? 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破 坏。 2. 数据库安全性和计算机系统的安全性有什么关系? 答:安全性问题不是数据库...

    课件-第8章-网络安全.pptx

    网络攻击方式 Internet 用户A 用户B 被动攻击 窃听 被动攻击方式 课件-第8章-网络安全全文共59页,当前为第6页。 网络攻击方式 主动攻击方式 Internet 拒绝服务攻击 服务器 主机 主动攻击 篡改 课件-第8章-网络安全...

    maven window下安装包

    第6章:仓库/6.3 仓库的分类/6.3.1 本地仓库/6.3.1.1 setting.xml文件路径 第6章:仓库/6.3 仓库的分类/6.3.2 远程仓库(超级POM) 第6章:仓库/6.3 仓库的分类/6.3.3 私服 第6章:仓库/6.4 远程仓库的配置 第6章:...

    信息系统安全(陈萍、张涛、赵敏)课后习题答案、章节ppt及期末复习知识整理.zip

    2.自主访问控制定义:资源的所有者,对于其拥有的资源,可以自主地将权限分发给其他主体,即确定这些主体对于资源有怎样的访问权限,是最常用的访问控制机制 3.强制访问控制定义:在强制访问控制中,每个用户及文件...

    陈伟航第四章作业1

    第四章6 .什么是数据库中的自主存取控制方法和强制存取控制方法?答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存

    Magento-中文开发教程

    深入理解Magento-第六章 – 高级Magento模型 深入理解Magento-第七章 – 自定义Magento系统配置 深入理解Magento-第八章 – 深入自定义Magento系统配置(未完成) 深入理解Magento-第九章 – 修改、扩展、重写...

    Windows Server 2003系统安全管理

    第6章 应用程序与服务安全 6.1 HS安全结构 6.1.1 用户权限安全 6.1.2 IIS访问安全 6.1.3 NTFS访问安垒 61.4 HS安装安全 6.2 web安全 6.2.1 用户控制安全 6.2.2 访问权限控制 6.2.3.IP地址控制 6.2.4 端口安全 6.2.5....

Global site tag (gtag.js) - Google Analytics