重新精读《Java 编程思想》系列之类的访问权限
Java 中,我们用访问权限修饰词确定库中的哪些类对于使用者是可以使用的。
访问权限修饰词有 public,protected,private 和什么都不写。
那么对于类来说,我们只可以用 public 和什么都不写两种。
protected 和 private 是不可以直接修饰类的。
我们在编译器中进行尝试。发现两种都是会提示报错的。说明是不可行的。


而我们使用 public 和不写修饰词是可以通过编译的。


弄清楚了什么可以修饰,什么不可以修饰之后,我们再来详细分别探究一下 public 和 不写修饰词的两种情况。
Public 修饰类
我们在使用public 修饰类的时候,要注意以下两点限制。
1、同一个类中只能有一个public类,多个是不被允许的。

这样是不行的,编译器告诉我们,需要在另一个文件中,重新声明这个class类。
2、public 修饰的类名必须与文件的类名一模一样,大小写敏感。
比如我们的文件名是 TestPublic,我们的public 修饰的类名也必须是 TestPublic,当你小写了一个字母,或者换名,都是不可以的。


再来说一下,当类是使用 public 修饰的时候,证明该类可以被同包或者不同包的任意类都可以访问是完全公开的。
无修饰词的修饰类
与public 不同的是,比如你的文件名叫 TestPublic,你内部的类如果不加修饰词,你可以随意取名。这样是完全不会报错的,但是一般是不会这么做的。

而且如果不使用修饰词修饰,在一个文件中,是可以拥有多个无修饰词的类的。

当你使用无修饰词的类的时候,只有与当前类同包下的类才可以创建对象。其他包是不可以创建这个类的对象的。
所以说,对于类来说,我们要不然使用 public 修饰,要不然使用包访问权限修饰。
我们使用修饰词是来控制对于类的访问。我们如果不想让类被其他人使用,可以将类的构造器方法设置为private。这样其他类就不能创建这个类的对象。


但是这也不是肯定的,我们可以通过一种设计模式,单例模式来实现。这样,即使构造方法是私有的。我们也可以获得这个对象。

重新精读《Java 编程思想》系列之类的访问权限的更多相关文章
- Java程序员的日常 —— 《编程思想》包和访问权限
包的作用 在C++中有命名空间的概念,这是因为,不同的项目或者人写出来的代码,可能名称是一样的.比如,java.util中有List,java.awt中也有List,那么我们在开发中,怎么会知道使用的 ...
- 重新精读《Java 编程思想》系列之组合与继承
Java 复用代码的两种方式组合与继承. 组合 组合只需将对象引用置于新类中即可. 比如我们有一个B类,它具有一个say方法,我们在A类中使用B类的方法,就是组合. public class B { ...
- Java编程思想读书笔记(一)【对象导论】
2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...
- 异常笔记--java编程思想
开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出 ...
- 《Java编程思想》阅读笔记二
Java编程思想 这是一个通过对<Java编程思想>(Think in java)进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会忽略或 ...
- 《Java编程思想》阅读笔记一
Java编程思想 这是一个通过对<Java编程思想>(Think in java)第四版进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会 ...
- java编程思想-基础
interface: 方法默认为public:成员变量默认 static and final 对象数组的定义:理解? 多接口继承:可以多个接口,但只有一个具体类,具体类在前面 自:多接口继承时,来自不 ...
- 重学Java(一):与《Java编程思想》的不解之缘
说起来非常惭愧,我在 2008 年的时候就接触了 Java,但一直到现在(2018 年 10 月 10 日),基础知识依然非常薄弱.用一句话自嘲就是:十年 IT 老兵,Java 菜鸡一枚. 于是,我想 ...
- Java编程思想——第17章 容器深入研究 读书笔记(三)
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...
- Java编程思想——第17章 容器深入研究(two)
六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...
随机推荐
- Oracle的高水位线
一.什么是水位线 所有的oracle段都会有一个在段内容纳数据的上线,把这个上限成为“high water mark”,这是一个标记,用来说明已经有多少没有使用的数据块分配给这个段,原则上high w ...
- 【2018寒假集训Day 8】【并查集】并查集模板
Luogu并查集模板题 #include<cstdio> using namespace std; int z,x,y,n,m,father[10001]; int getfather(i ...
- JVM系列一(Java内存区域和对象创建).
一.JVM 内存区域 堆 - Heap 线程共享,JVM中最大的一块内存,此内存的唯一目的就是存放对象实例,Java 堆是垃圾收集器管理的主要区域,因此很多时候也被称为"GC堆"( ...
- oralce迁移Mysql问题总结
最近从oracle数据库迁移到Mysql, 总结了一些不兼容和需要注意的地方,持久层用的Mybatis 1 guid尽量用代码生成 现象:sys_guid() mysql报错,mysql对应的为UU ...
- sortColors
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the ...
- 【RN - 基础】之React Native常见问题及解决方案
unable to load script from assets index.android.bundle... 问题原因: 找不到Android项目中的assets文件夹. 解决方案: 1.在An ...
- php mysql 中文乱码解决,数据库显示正常,php调用不正常
一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是 ...
- 网页采集器-UA伪装
网页采集器-UA伪装 UA伪装 请求载体身份标识的伪装: User-Agent: 请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,如果使用爬 ...
- python内存-fromkeys
fromkeys 这个方法涉及到可变不可变类型,记录下测试代码 不可变类型 #可变类型-list x=["zx","zx2","zx3"] ...
- php 7.4 的 Unpacking inside arrays (...)
总的说明 php 7.4 增加了一个很有意思的功能 这是官方说明: Unpacking inside arrays <?php$parts = ['apple', 'pear'];$fruits ...