《Java编程思想》06.访问权限控制

  • 如何把变动的事物与保持不变的事物区分开来
  • 访问权限控制的等级(大->小):public、protected、包访问权限(没有关键词)、private

包:库单元

代码组织

  • 编译一个.java文件,文件中的每个类都会有一个输出文件.class,文件名与类名相同
  • Java的可运行程序是一组可以打包并压缩为一个Java文档文件(JAR)的.class文件。Java解释器负责这些文件的查找、装载和解释
  • 类库 ---实际上---> 一组类晚间
  • Java包的命名规则全部使用小写字母
package access.mypackage;
public class MyClass{ /* ... */ }

使用import来使access中的名称可用

import access.mypackage.MyClass

创建独一无二的包名

  • package名称的第一部分:类的创建者的反序Internet域名

思考:条件编译

Java访问权限修饰词

包访问权限

  • 默认访问权限(没有任何关键字)
  • 有时也表示成friendly

    包中的类相对于:

当前包所有其他类 包之外的所有类
有访问权限 相当于与private

取得某成员的访问权限的途径

  • 使改成员为public
  • 成员不加修饰词 & 其他类置于同一个包
  • 继承 - 可访问public成员、protected成员
  • 提供访问其(accessor)和变异器(mutator) - get/set方法

public:接口访问权限

private:你无法访问

通常考虑的是,那些成员是想要明确公开给客户端程序员使用的,从而将它们声明为public,而在最初,你可能不会认为自己经常会需要使用private,因为没有它,照样可以工作。然而,事实很快就会证明,对private的使用是多么的重要,在多线程下更是如此。

  • 任何可以肯定只是该类的一个“助手”方法的方法,都可以把它指定为private,确保不会在包内的其他地方误用

protected:继承访问权限

接口和实现

访问权限的控制->具体实现的隐藏、封装

  • 设定客户端程序员可以使用和不可以使用的边界
  • 将接口和具体实现进行分离

类的访问权限

  • 对于类的访问权限,仅有两个选择:包访问权限或public

总结

  • 控制成员的访问权限的两个原因:

    • 使用户不要触碰那些不该触碰的部分
    • 让类库设计者可以更改类的内部工作方式

    面向扩展开放,面向修改关闭

当具备了改变底层实施细节的能力,不仅可以随意地改善设计,还可能会随意地犯错误,当了解到你所犯的错误是相对安全的时候,就可以更加放心地进行实验,也就可以更快地学会,更快地完成项目

原文地址:https://www.cnblogs.com/hhhqqq/p/12588175.html

时间: 2024-11-03 21:41:46

《Java编程思想》06.访问权限控制的相关文章

重读java编程思想之访问权限控制二

private:私有权限 即除了包含该成员的类之外,其他任何类都无法访问这个成员: class Sun{ private Sun(){} static Sun doSun(){ return new Sun(); } } public class IceCream{ public static void main(String[] args){ // Sun s = new Sun(); 这是错误的 Sun s = Sun.doSun(); } } //上面的例子简单的描述了private的一个

Java编程思想(三) —— 访问权限的控制

之前没去注意的修饰符,一般变量前面没添加,一个是不知道有什么用,一个是懒,后面遇到项目的时候就会发现私有和公有区别还是很大的. (1)首先是包名 使用一个类的时候,例如集合类,就需要引入这个包,然后再使用该包下面的类.如: package com.myown.iaiti; public class Print { static void print(String s){ System.out.println(s); } } 自定义的包,通过引入自己的包,以后你就可以使用自己写的方法进行字符串的打

Java - Thinking in Java 第6章 访问权限控制

面向对象的基本问题: 如何把变动的事物与保持不变的事物区分开来. 重构即重写代码, 以使得它更可读, 更易理解, 并因此更具可维护性. 访问权限: public, protected, 包访问权限, private. 本地使用, 未命名包, 即默认包. 每个文件即编译单元, 后缀名.java, 编译之后, 后缀名.class. 类库package, public全部权限, 未命名包内权限. Java包的命名规则全部使用小写字母, 包含中间的字也是如此. package和import的目的是命名空

Java编程思想(四、控制执行流程)

Java使用了C的所有流程控制语句.涉及的关键字包括if-else.while.do-while.for.return.break以及选择语句switch.然而,在java中,并不支持goto语句.但仍然可以进行类型goto那样的跳转,但比起典型的goto,有了很多限制. 1.true和false.所有的条件语句都利用条件表达式的真假来决定执行路径.java中的所有关系操作符,都可以用来构造条件语句.但不能将一个数字作为布尔值使用,(在C.C++中,"真"是非零,"假&quo

Java编程思想---第四章 控制执行流程

第四章  控制执行流程 就像有知觉的生物一样,城西必须在执行过程中控制它的世界并作出选择,在Java中,你要使用执行控制语句来作出选择. 4.1 true和false 所有的条件语句都利用条件表达式的真假来决定执行路径.如a==b,它用操作符==来判断a的值是否等于b的值,返回一个true或false. 4.2 if-else if-else语句是控制程序流程的最基本形式,其中else是可选的,所以可以按下面的两种形式来使用: if(Boolean-expression) statement 或

Java编程思想:第4章 控制执行流程

4.1 true和false 所有条件语句都用真和假来判断. 4.2 if-else if(bool-exp) statement;  or  if(bool-exp) statement; else statement; 4.3 迭代 while(b){} do{}while(b) for(init;b;step){}init里可以用逗号定义多个初始变量 4.4 Foreach语法 增强for循环  for(T t : 集合/数组){} 4.5 Return 4.6 Break和Continu

Java编程思想(四) —— 复用类

看了老罗罗升阳的专访,情不自禁地佩服,很年轻,我之前以为和罗永浩一个级别的年龄,也是见过的不是初高中编程的一位大牛之一,专访之后,发现老罗也是一步一个脚印的人.别说什么难做,做不了,你根本就没去尝试,也没有去坚持. If you can't fly then run,if you can't run then walk, if you can't walk then crawl,but whatever you do,you have to keep moving forward--Martin

浅析Java中的访问权限控制

浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1.fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理? 此时,访问权限控制便可以

Java编程思想:第6章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 很多时候我们需要重构代码使之更可读,更易理解,更具维护性,但是又不能影响到客户端程序员的正常使用.我们根本不知道客户端程序员使用了哪些东西(方法),所以我们也不知道哪些东西可以改,为了解决这个问题,java提供了访问权限修饰词.访问修饰词加上包结构使得构件的捆绑和使用机制非常完善,不产生冲突. 6.1 包:库单元 用包来分隔管理不同的类. 不同包下的类需要导入,就是为了提供一个管理名字空间的机制.package 和 import就是为了解