类的包访问权限:《Java编程思想》中一段话的困惑
类的包访问权限:《Java编程思想》中一段话的困惑
在《java编程思想第三版》(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: “正如前面所提到的,如果没能为类访问权限指定一个访问修饰符,它就会缺省得到包访问权限。这意味着该类的对象可以由包内任何其他类来创建,但包外则是不行的。(一定要记住,相同目录下的所有不具有明确package声明的文件,都被视作是该目录下缺省包的一部分。)然而,如果该类的某个static成员是public的话,则客户端程序员仍旧可以调用该static成员,尽管他们并不能生成该类的对象。” 刚开始我对最后一句话的理解是:如果某个类没有指定访问修饰符,但其中有static成员是public的话,在包外的类中仍然可以调用该类的static的public方法或访问static的public成员字段。 于是我做了下面的实验:(我的classpath没有设置,是默认值,即是当前路径;我CMD的当前路径Thinking in java。) package chapter5; class Test public void println() 在Thinking in java/下有Test1.java,代码如下 import chapter5.*; public class Test1 接着,编译Test1.java,结果编译器报错,说Test类不是公开类,不可以调用其方法或访问其成员字段。 结论: 再顺便提一句,在很多书中,都说如果类的成员是public的,那么无论是谁,无论在哪里,都可以访问该成员的。这种说法其实是不准确的,因为它有个前提,那就是那类必须是public。 Ps:我只是个初学者,这是我自己的总结,如果有错误,请高手斧正。 附Julysea评论 Test.java package javaforum.inner; class Test { Main.java import java.lang.reflect.Field; public class Main { 可以看到的是利用java的反射机制,确实可以办到作者的意图。而且,也只能到public staic 为止,其他存取限定下的数据,用反射也是不可以取到的。似乎原来的翻译中“仍旧可以调用”改为“仍然能够存取”,可能更好。 |
类的包访问权限:《Java编程思想》中一段话的困惑相关推荐
- NIO 类的基本用法 --《JAVA编程思想》79
JDK 1.4 引入了 java.nio.* 新类库提升 I/O 读写速度, 效率的提升主要得益于 nio 类库中采用的数据结构更接近于操作系统执行 I/O 的方式:通道和缓冲器. 通道作为数据仓库, ...
- 《JAVA编程思想》学习笔记:第1-4章(Java概述)
全书目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章 ...
- 《JAVA编程思想》学习笔记:第21章(并发)
目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...
- 《JAVA编程思想》学习笔记:第8章(多态)
目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...
- 《JAVA编程思想》学习笔记:第16章(数组)
目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...
- 《JAVA编程思想》学习笔记:第19章(枚举)
目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...
- java学习笔记 java编程思想 第6章 访问权限控制
文章目录 6.1 包:库单元(the library unit) 6.1.1 代码组织 6.1.2 创建独一无二的包名 练习1 练习2 6.1.3 定制工具类 6.1.4 用import改变行为 练习 ...
- java学习笔记 java编程思想 第7章 复用类
文章目录 7.1 组合语法 练习1 7.2 继承语法 7.2.1 初始化基类 练习3 练习4 练习5 带参数的构造器 练习6 练习7 练习8 练习9 练习10 7.3 代理 练习11 7.4 结合使用 ...
- 《Java编程思想》第四版读书笔记 第十四章 类型信息
2019独角兽企业重金招聘Python工程师标准>>> 14.2 RTTI运行时类型识别. Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI.每个类都有 ...
最新文章
- 【Unity】12.5 Navmesh Obstacle组件
- Bing API 2的体验
- 软件开发人员标准薪金 人月_软件产品测试周期
- 2012年初二晚越秀公园游灯有感一二
- latex中插图心得
- html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果
- 怎样做高质量的财务分析?
- 无监督学习 | DBSCAN 原理及Sklearn实现
- sqlserver evaluation是什么版本_SQL Server 基础知识
- linux pdf to txt,PDF转换为TXT
- 比特币技术公司创始人:ICO是一场被骗子玩弄的网络泡沫
- mercurial和svn_DBA Mercurial简介–处理文件和更改
- 一个很好的String组合连接的方法(StringBuffer)
- http 502错误怎么解决?
- 微信保存图片提示失败_微信为什么保存不了图片
- nb移动udp_电信NB物联网平台不仁不义有人来管管吗?
- Python多进程写Kafka
- 一个喜欢研究车的80后开车人,自己的经验和感受
- 启发式算法求解混合整数线性优化问题—— 生产计划安排和资源分配
- 计算机站课作文400字,关于电脑教室的作文400字
热门文章
- 南京邮电考研计算机科学大纲,2019年南京邮电大学811数据结构考研大纲
- 华硕服务器主板z8na-d6开关位置,华硕双路服务器主板Z8NA-D6
- mysql年月分表_MySQL之按月拆分主表并按月分表写入数据提高数据查询速度
- mysql 普通索引和唯一索引_MySQL 普通索引和唯一索引的区别
- wordcount代码_Scala小案例之wordcount
- mysql的实验环境_第04 章 MYSQL实验环境创建
- python图像配准的原理_python利用sift和surf进行图像配准
- 网络七层协议_Nginx七层负载均衡原理解析
- 怎么重置mysql密码是多少钱_mysql怎么重置密码
- java用1234组成,用javasecp代码展现数字1234可以组成多少个三位数