《Java编程思想》笔记 第六章 访问权限控制
1.编译单元
- 一个 编译单元即 .java 文件 内只能有一个 public 类 且该文件名必须与public 类名 完全一致。
- 编译单元内也可以没有public类 文件名可随意。
2. 包:库单元
- 默认访问权限即包访问权限,同一包下可访问(指同一目录下各个.java文件中的包访问权限类或者类成员可相互访问)。
- 父,子目录不属于同一包(其实没有什么父子目录,包名都是唯一的)。
- 包可以看成类的集合,里面有public类 也有默认权限类,所以同一包下2个.java文件中不能有类同名。
- 要使用其他包中的类 需要导包 import
- 静态导入 impor static.... classname.* 这样该类中的所有静态方法就可以直接调用而不用使用类名调用。*也可以换成具体的一个静态方法。
- 静态导入 impor static 同样可以导入ENUM类的枚举元素而不用类名调用。
3.权限从大到小
- public protected 包访问权限 private
- public 接口访问权限
- protected 继承访问权限和包访问权限,无public权限。
- private 无法访问 只有该private成员所在的类能访问。
- 把所有构造器设为private可以阻止类之外通过new创建对象。
4.类的权限
- 类只有public和默认包权限,内部类可以有protected和private权限。
5.访问权限控制也叫具体实现的隐藏
6.封装
- 把数据和方法包装进类中,以及具体实现的隐藏,并提供对外访问的接口。
7.类的访问权限
- 对于一个类来说其内部成员相互没有什么权限,并且调用方法不需要对象和this
class Test {
private void f() { }; void g() { f();
};
}
8.private构造器 外部不能产生该类对象
- private构造器 外部不能产生Test对象 但可以通过其类内部的静态方法返回该类对象,这样外部就可以创建Test对象了
public class ClassRe { public static void main(String[] args) {
Test p1 = Test.make(),
p2 = Test.make();
System.out.println(p1);
System.out.println(p2); } } class Test {
private Test() {}; static Test make() { return new Test();
}
}
从输出看创建了2个不同对象
lpkiebfe.Test@62efae3b
lpkiebfe.Test@6597d63b
9.单例
class Test {
private Test() {}; private static Test t1 = new Test(); //只创建一个对象 public static Test access(){ //外部只能通过调用该方法创建Test对象
return t1;
}
}
《Java编程思想》笔记 第六章 访问权限控制的更多相关文章
- 初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制
包:库单元 包内包含有一组类,他们在单一的名字空间下被组织在一起. 通过import ***.***.*可以将某个包下的所有类导入到当前文件中. 每个Java源文件最多只能有一个public类,且名称 ...
- 重新精读《Java 编程思想》系列之类的访问权限
Java 中,我们用访问权限修饰词确定库中的哪些类对于使用者是可以使用的. 访问权限修饰词有 public,protected,private 和什么都不写. 那么对于类来说,我们只可以用 publi ...
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- java编程思想笔记(1)
java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自 ...
- #Java编程思想笔记(一)——static
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...
- 《Java编程思想》第一二章
前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本<Java编程思想>,希望先把基础打好,再深入 ...
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
- 2.1(java编程思想笔记)位移操作
java位移操作主要有两种: 有符号位移:有符号位移会保留原有数字正负性,即正数依然是正数,负数依然是负数. 有符号位左移时,低位补0. 有符号右移时:当数字为正数,高位补0.当数字为负时高位补1. ...
- java编程思想笔记(第一章)
Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5 ...
随机推荐
- 安装一台Linux练习机前的考虑——主机规划与磁盘分区
要安装一台Linux主机并不是那么简单的事,我们必须要针对distributions的特性.服务器软件的能力.未来的升级需求.硬件扩充性需求等来考虑,对于磁盘分区.文件系统.Linux操作较频繁的目录 ...
- 基于bootstrap动态分页
bootstrap本身的分页有分页组件 但是却是静态的,无法满足要求,分页必须根据当前的总页数来展示 使用插件bootstrap-paginator github下载地址 https://github ...
- javaScript this 之谜
作为接触js没多久的人对变量作用域和this所指表示非常迷惑,专门花了一个下午google了一下,感觉以前百度到的结果都是什么鬼... 下面是我对this的认识,学疏才浅请拍砖 每一个方法都有自己的上 ...
- [剑指Offer] 38.二叉树的深度
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. [思路1]递归 /* struct TreeNode { int v ...
- 【bzoj3191】[JLOI2013]卡牌游戏 概率dp
题目描述 n个人围成一圈玩游戏,一开始庄家是1.每次从m张卡片中随机选择1张,从庄家向下数个数为卡片上的数的人,踢出这个人,下一个人作为新的庄家.最后一个人获胜.问每个人获胜的概率. 输入 第一行包括 ...
- 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- bzoj3011 可并堆
我们可以遍历得出每个节点到根节点的距离h,然后用可并堆进行维护.树形dp 我用的是pairing heap #include<cstdio> #include<algorithm&g ...
- 洛谷 P1415 拆分数列 解题报告
拆分数列 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数. 如果有多组解,则输出使得最后一个 ...
- IOI1998 Polygon [区间dp]
[IOI1998]Polygon 题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘 ...
- BZOJ1191:超级英雄(二分图匹配)
[HNOI2006]超级英雄Hero 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1191 Description: 现在电视台有一种节 ...