1.编译单元

  • 一个 编译单元即 .java 文件 内只能有一个 public 类  且该文件名必须与public 类名 完全一致。
  • 编译单元内也可以没有public类 文件名可随意。

2. 包:库单元

  1. 默认访问权限即包访问权限,同一包下可访问(指同一目录下各个.java文件中的包访问权限类或者类成员可相互访问)。
  2. 父,子目录不属于同一包(其实没有什么父子目录,包名都是唯一的)。
  3. 包可以看成类的集合,里面有public类 也有默认权限类,所以同一包下2个.java文件中不能有类同名。
  4. 要使用其他包中的类 需要导包 import
  5. 静态导入 impor static.... classname.*   这样该类中的所有静态方法就可以直接调用而不用使用类名调用。*也可以换成具体的一个静态方法。
  6. 静态导入 impor static 同样可以导入ENUM类的枚举元素而不用类名调用。

3.权限从大到小

  • public   protected   包访问权限   private
  1. public 接口访问权限
  2. protected 继承访问权限和包访问权限,无public权限。
  3. private 无法访问 只有该private成员所在的类能访问。
  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个不同对象

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编程思想》笔记 第六章 访问权限控制的更多相关文章

  1. 初读"Thinking in Java"读书笔记之第六章 --- 访问权限控制

    包:库单元 包内包含有一组类,他们在单一的名字空间下被组织在一起. 通过import ***.***.*可以将某个包下的所有类导入到当前文件中. 每个Java源文件最多只能有一个public类,且名称 ...

  2. 重新精读《Java 编程思想》系列之类的访问权限

    Java 中,我们用访问权限修饰词确定库中的哪些类对于使用者是可以使用的. 访问权限修饰词有 public,protected,private 和什么都不写. 那么对于类来说,我们只可以用 publi ...

  3. Java编程思想 笔记

    date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...

  4. java编程思想笔记(1)

    java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自 ...

  5. #Java编程思想笔记(一)——static

    Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...

  6. 《Java编程思想》第一二章

    前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本<Java编程思想>,希望先把基础打好,再深入 ...

  7. Java编程思想 4th 第2章 一切都是对象

    Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...

  8. 2.1(java编程思想笔记)位移操作

    java位移操作主要有两种: 有符号位移:有符号位移会保留原有数字正负性,即正数依然是正数,负数依然是负数. 有符号位左移时,低位补0. 有符号右移时:当数字为正数,高位补0.当数字为负时高位补1. ...

  9. java编程思想笔记(第一章)

    Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5 ...

随机推荐

  1. c# 自动关机代码

    #region 关机代码 //C#关机代码 // 这个结构体将会传递给API.使用StructLayout //(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整. [Struct ...

  2. STL 六大部件

    stl具有上面6大部件 容器是存储数据的,原理主要是模板,容器只是负责存储数据,并不关心内存的存储情况,所以出现了分配器,分配器主要是负责为容器分配内存的,对于数据的操作被封装为一个个函数,也就是算法 ...

  3. 团队作业4——第一次项目冲刺(Alpha版本)-第二篇

    项目冲刺——第二阶段 度过了敏捷冲刺,各个成员积极汇报各自的工作.好了,着手下一步规划! Mission 团队成员 任务 郭达  实现PHP后台的答题判分查看正确率 刘德培  编写博客 石浩洋  实现 ...

  4. microtime()

    PHP函数microtime()返回当前 Unix 时间戳和微秒数.

  5. 图解WinXP局域网共享设置步骤

    原文链接地址:http://blog.csdn.net/jackinzhou/article/details/8468208 第一章:共享的前提工作 1.更改不同的计算机名,设置相同的工作组! 2.我 ...

  6. [Leetcode] combinations 组合

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  7. POJ3261 Milk Patterns 【后缀数组】

    牛奶模式 时间限制: 5000MS   内存限制: 65536K 提交总数: 16796   接受: 7422 案件时间限制: 2000MS 描述 农夫约翰已经注意到,他的牛奶的质量每天都在变化.经进 ...

  8. 洛谷 [CQOI2015]选数 解题报告

    [CQOI2015]选数 题目描述 我们知道,从区间\([L,H]\)(\(L\)和\(H\)为整数)中选取\(N\)个整数,总共有\((H-L+1)^N\)种方案. 小\(z\)很好奇这样选出的数的 ...

  9. 【ZJ选讲·BZOJ 5071】

    小A的数字 有一串数字A1 ,A2,--,An,每次可以进行如下骚操作: 选择一个数字i,将(Ai-1,Ai,Ai+1)变为(Ai-1+Ai,-Ai,Ai+1+Ai), (特别地,若i=N,则( ...

  10. 处理WebService asmx的经验

    项目的需求,需要和一个.net系统进行数据交换,合作方提供了一个WebService接口.这个与一般的PHP POST或GET传值再查库拿数据的思路有点不一样,需要用到SOAP模块,处理方法也很简单, ...