初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制
- 包:库单元
- 包内包含有一组类,他们在单一的名字空间下被组织在一起。
- 通过import
***.***.*可以将某个包下的所有类导入到当前文件中。 - 每个Java源文件最多只能有一个public类,且名称必须与文件名相同。源文件中的其他类在包外事不可见的,主要用来为public类提供支持。
- Java的可运行程序是一组可以打包并压缩为一个Java文档文件(jar)的.class文件。
- package 和import可以将单一的全局名字空间分割开,使得无论多少人使用Java编写类,都不会出现名称冲突问题。
- 可以通过package创建自己的工具包,并通过
import static导入静态方法。 - 利用import可以实现选择性编译的功能。
- Java虚拟机可以通过classpath+包名的方法寻找到.class文件的位置。
- 包名隐含地指定了目录结构。
- Java访问权限修饰词
- 包访问权限
- 不加修饰词的为包访问权限。
- 当前包中的所有其他类对该成员或方法都可访问,但对包外而言是私有的。
- 由于一个.java文件只能属于一个包,因此在一个.java文件中的所有类彼此之间都可以访问。
- 如果没有明确设置package,那么java会默认该文件夹下的.java文件都默认属于该目录的默认包,都享有包访问权限。
- public:接口访问权限
- public声明的成员,对每个人都是可见的。
- private:无法访问
- private允许创建者随意改变该成员,而不必考虑这样做是否会影响到包内其他的类。
- protected:继承访问权限
- protected 提供包访问权限和派生类访问权限。
- 包访问权限
- 接口和实现
- 访问权限的控制被称为"具体实现的隐藏"。
- 将数据和方法包装进类中,并将具体实现隐藏的过程称为封装;
- 访问权限控制将接口和具体实现分离。客户端程序员只能通过public方法向接口发送信息,因此类开发者可以任意修改不是public的内容。
- 类的访问权限
- 每个编译单元只能有一个public类,表示只能有单一的公共接口。
- 每个编译单元可以不存在public的类,此时文件名可以任意取。
- 类访问权限不能是private和protected(内部类除外)。
- 非public类内部如果存在静态public成员的话,仍然可以在外部访问该成员而不会创建对象。
- 总结
- 访问权限控制的原因
- 一是可以使客户端程序员了解到类的哪些部分对他们是有用的,哪些部分是没用的,简化他们对类的理解
- 二是可以使类库设计者随意地更改类的内部工作方式,而不用担心对客户端程序员产生重大的影响。
- 访问权限控制的原因
初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制的更多相关文章
- 初读"Thinking in Java"读书笔记之第七章 --- 复用类
组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 J ...
- 初读"Thinking in Java"读书笔记之第五章 --- 初始化与清理
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认 ...
- 初读"Thinking in Java"读书笔记之第四章 ---控制执行流程
true和false Java不允许将数字作为布尔值使用. 所有条件表达式都将布尔值作为判断条件,决定执行路径. if-lese 迭代 while,do-while,for为三个迭代语句. ,逗号操作 ...
- 初读"Thinking in Java"读书笔记之第三章 --- 操作符
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...
- 《Java编程思想》笔记 第六章 访问权限控制
1.编译单元 一个 编译单元即 .java 文件 内只能有一个 public 类 且该文件名必须与public 类名 完全一致. 编译单元内也可以没有public类 文件名可随意. 2. 包:库单元 ...
- 初读"Thinking in Java"读书笔记之第二章 --- 一切都是对象
用引用操纵对象 Java里一切都被视为对象,通过操纵对象的一个"引用"来操纵对象. 例如, 可以将遥控器视为引用,电视机视为对象. 创建一个引用,不一定需要有一个对象与之关联,但此 ...
- 初读"Thinking in Java"读书笔记之第九章 --- 接口
抽象类和抽象方法 abstract void f();抽象方法是仅有声明而没有方法体的方法. 包含抽象方法的类叫做抽象类,如果一个类包含了一个抽象方法,则该类必须限定为抽象类. 抽象类和抽象方法可以使 ...
- 初读"Thinking in Java"读书笔记之第八章 --- 多态
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...
- 关于《Java读书笔记》第六章课后习题选择题总结与疑问
课后习题 选择题 3 题 代码: class Some{ String ToString(){ return "Some instance"; } } public class M ...
随机推荐
- hadoop配置项笔记 - hdfs
hadoop版本:3.1.1 core-site.xml dfs.namenode.rpc-address 作用:rpc地址.我在使用distcp时显式使用到了. 默认值:port是8020 我的设置 ...
- python 在字典中添加键值对的方法。
list 添加元素的方法是 list.append(a).将 a 添加到 list 里. dict 添加元素的方法是 dict.update(dict2).意为,将 dict2 的内容添加到 di ...
- Kafka集群安装部署、Kafka生产者、Kafka消费者
Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...
- 什么是卷积convolution
定义 卷积是两个变量在某范围内相乘后求和的结果.如果卷积的变量是序列x(n)和h(n),则卷积的结果 , 其中星号*表示卷积. 当时序n=0时,序列h(-i)是h(i)的时序i取反的结果:时序取反使得 ...
- x变成y的最少操作次数(层次遍历)
输入x,y,x为源数字,y为目标值.输出x变成y的最少操作次数. x每次可以执行三种操作:-1 . +1 . x2: 如 x=5,y=8:5-1=4,4x2=8;所以输出结果为2(次操作). 可以发现 ...
- python 字典 dict 该注意的一些操作
在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下: 1)操作dict 时,尽量少产生新的列表对象.比如: 遍历dict的时候,如果用 dic = {"a" ...
- linux-基础命令篇-02
基本命令:--LS 关于显示的颜色含义: 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示 ...
- count性能
表有主键列,count(1)的效率会稍微高于count(*),count(主键列)效率会高于count(1).表没有主键列,count(1)效率会高于count(*) count(1).count(* ...
- vs2015 c# winfrom应用程序打包成64位
关于Winform打包过程在网上已有详细教程,参考:https://www.cnblogs.com/yinsq/p/5254893.html 此次工作中需要打包成64位的程序,网上没有查到方法,现在讲 ...
- 笔记《JavaScript 权威指南》(第6版) 分条知识点概要1—词法结构
[词法结构]字符集.注释.直接量.标识符和保留字.可选的分号 [字符集] JavaScript程序是用Unicode字符集编写的. Unicode是ASCII和Latin-1的超集,支持地球上几乎所有 ...