《Java编程思想》笔记 第六章 访问权限控制
Posted Mibloom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java编程思想》笔记 第六章 访问权限控制相关的知识,希望对你有一定的参考价值。
1.编译单元
- 一个 编译单元即 .java 文件 内只能有一个 public 类 且该文件名必须与public 类名 完全一致。
- 编译单元内也可以没有public类 文件名可随意。
2. 包:库单元
2.1 默认访问权限即包访问权限,同一包下可访问(指同一目录下各个.java文件中的包访问权限类或者类成员可相互访问)。
2.2 父,子目录不属于同一包(其实没有什么父子目录,包名都是唯一的)。
2.3 包可以看成类的集合,里面有public类 也有默认权限类,所以同一包下2个.java文件中不能有类同名。
2.4 要使用其他包中的类 需要导包 import
3.权限从大到小
- public protected 包访问权限 private
3.1 public 接口访问权限
3.2 protected 继承访问权限和包访问权限,无public权限。
3.3 private 无法访问 只有该private成员所在的类能访问。
3.4 把所有构造器设为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个不同对象
9.单例
class Test { private Test() {}; private static Test t1 = new Test(); //只创建一个对象 public static Test access(){ //外部只能通过调用该方法创建Test对象 return t1; } }
.
以上是关于《Java编程思想》笔记 第六章 访问权限控制的主要内容,如果未能解决你的问题,请参考以下文章