类的访问权限

Java中,访问权限修饰词用于确定库中哪些类对于该库的使用者是可用的。

  1. public class Foo{
  2. }

注意点:

  1. 每个文件(编译单元)只能有一个public类。
  2. public类的名称必须完全和含有该编译单元的文件名相匹配,包括大小写。
  3. 编译单元内没有public类也是可行的(不常这么用),在这种情况下,可以随意对文件命名。

类既不可以是private的(除该类以外,任何类都不能访问它),也不可以是protected。(事实上,内部类可以是private或protected的)

类的访问权限:包访问权限或public。

若不希望别人对该类有访问权限,可以将所有的构造器都指定为private,从而阻止其他人创建该类的对象。

例外

在该类static成员内部可以创建。

  1. class Soup1{
  2. //构造器是private,任何其他人无法创建该类对象
  3. private Soup1(){
  4. }
  5. //static方法,创建对象并返回引用。
  6. //1.可以在返回引用前,做一些额外的工作
  7. //2. 可以记录创建了几个类的对象
  8. public static Soup1 makeSoup(){
  9. return new Soup1();
  10. }
  11. }
  12. class Soup2{
  13. private Soup2(){
  14. }
  15. //单例模式,始终只能创建一个对象
  16. public static Soup2 soup2 = new Soup2();
  17. public static Soup2 access(){
  18. return soup2;
  19. }
  20. public void f(){
  21. }
  22. }
  23. public class Lunch {
  24. void testPrivate(){
  25. // Soup1 soup1 = new Soup1();
  26. }
  27. void testStatic(){
  28. Soup1 soup1 = Soup1.makeSoup();
  29. }
  30. void testSingleton(){
  31. Soup2.access().f();
  32. }
  33. }

对于包访问权限修饰的类,包内其他类可以创建它的对象,包外则不行。但如果该类的某个static成员的访问权限是public的话,依旧可以调用

该static成员,尽管它们并不能生成该类对象。

Java编程思想学习笔记——类的访问权限的更多相关文章

  1. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  2. Java编程思想学习笔记_2(继承和多态)

    静态初始化: 静态初始化只在必要的时刻进行.(即当程序需要加载类进入内存的时候,执行静态初始化.静态变量和静态代码块的初始化顺序,按照在代码中声明的顺序老执行.例如:如果要执行某个public类,那么 ...

  3. Java编程思想 学习笔记6

    六.访问权限控制 访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 如何把变动的事物与保持不变的事物区分开来,这是面向对象设计中的一个基本问题. 为了解决这一问题,Java提供了访问权限修饰词 ...

  4. Java编程思想学习笔记——访问权限修饰词

    几种访问权限修饰词 public,protected,private,friendly(Java中并无该修饰词,即包访问权限,不提供任何访问修饰词) 使用时,放置在类中成员(域或方法)的定义之前的,仅 ...

  5. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  6. Java编程思想 学习笔记11

    十一.持有对象  通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...

  7. Java编程思想 学习笔记7

    七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...

  8. [Java编程思想-学习笔记]第2章 一切都是对象

    2.1  创建新的数据类型:类 通过第一章掌握了面向对象的理论后,我们知道每个对象必定属于一个类型,那么Java如何创建新的数据类型?如下程序所示: class Circle { // 属性 // 方 ...

  9. Java编程思想 学习笔记8

    八.多态  在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来. “封装”通过合并特征和行为来创建新的数据类型.“实现 ...

随机推荐

  1. 慢慢来,比较快。四年Android,共勉。

    四年阿,我特么以为我才17岁,不想已经27了,操蛋阿.加班熬夜,我的黑眼圈,黑头泛滥.如果木有自拍神器,我是决计不会爆照的!! 第一年,学了七天android找上了第一份工作,后来接了个外包,是做智能 ...

  2. cacti安装

    cacti是一套基于PHP,MySQL,Net-SNMP及RRDTool开发的网络流量监测图形分析工具.它通snmpget来获取数据,使用RRDtool绘画图形,提供了非常强大的数据和用户管理功能,同 ...

  3. <孤独者生存(小小辛巴投资手记)>读书笔记

    书在这里 让投机客梦醒的办法就是让资产损失至少一半 天不会塌下来,世界末日也不会这么快就降临,经济也许会萧条但不会崩溃,人们还得穿衣吃饭.休息劳作 每个笨蛋都会从自己的错误中吸取教训,聪明的人则从别人 ...

  4. Python MQTT订阅获取发布信息字典过滤

    起因是因为 订阅的时候,获取到的 MQTT 信息时,第一条信息好像是连接信息,所以需要过滤他. 接收到的数据如下 必须要过滤这个 name : 1 的字典,操作如下: def on_message(c ...

  5. Linux 获取 MAC 地址并去除 : 字符

    ifconfig -a | grep eth0 | awk -F ' ' '{print $5}' | sed 's/://g'

  6. PCL点云变换与移除NaN

    对点云的操作可以直接应用变换矩阵,即旋转,平移,尺度,3D的变换就是要使用4*4 的矩阵,例如:       等等模型 在这里直接使用程序开实现一个点云的旋转,新建文件matrix.cpp #incl ...

  7. PCL 可视化

    可视化(visualization)是利用计算机图形学和图像处理技术,将数据转换图像在屏幕上显示出来,并进行交互处理的的理论,方法和技术, pcl_visualization库建立了能够快速建立原型的 ...

  8. VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程

    邮箱已经收到了Visual Studio 2013的升级通知,但是很多软件如OpenCV.Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了). 网上搜了一些VS2012(或 ...

  9. ThinkPHP使用memcache缓存服务器

    (1)Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. 服务器装了memcached后想给更改成memecache方式 在Conf/config.p ...

  10. C艹复合类型(字符串)

    在C艹中有两种字符串形式, 一种是C-风格, 另一种是C艹风格的 初始化: char str[10] = {'a', 'c', 'd', '\0'};char str[20]= “aaa”; stri ...