易截截图软件、单文件、免安装、纯绿色、仅160KB

类的包访问权限:《Java编程思想》中一段话的困惑

类的包访问权限:《Java编程思想》中一段话的困惑
 
  在《java编程思想第三版》(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是:
  “正如前面所提到的,如果没能为类访问权限指定一个访问修饰符,它就会缺省得到包访问权限。这意味着该类的对象可以由包内任何其他类来创建,但包外则是不行的。(一定要记住,相同目录下的所有不具有明确package声明的文件,都被视作是该目录下缺省包的一部分。)然而,如果该类的某个static成员是public的话,则客户端程序员仍旧可以调用该static成员,尽管他们并不能生成该类的对象。”
  刚开始我对最后一句话的理解是:如果某个类没有指定访问修饰符,但其中有static成员是public的话,在包外的类中仍然可以调用该类的static的public方法或访问static的public成员字段。
  于是我做了下面的实验:(我的classpath没有设置,是默认值,即是当前路径;我CMD的当前路径Thinking in java。)
  在Thinking in java\chapter5\下有Test.java,代码如下
  package chapter5;
  class Test
  {
    public static int i=0;
    public static void print()
    {
    System.out.println("class Test public static procedure");
    }
    public void println()
    {
    System.out.println("class Test public procedure");
    }
  }
  在Thinking in java\下有Test1.java,代码如下
  import chapter5.*;
  public class Test1
  {
    public static void main(String[] args)
    {
    int a;
    a=Test.i;
    //Test.print();
    }
  }
  接着,编译Test1.java,结果编译器报错,说Test类不是公开类,不可以调用其方法或访问其成员字段。
  结论:
  1、《Java编程思想》那段话应该是错误的,至少说应该是有歧义的。(手上没有英文原版,所以原版是怎么描述的,不大清楚)
  2、具有包访问权限的类,包外的类是不可以调用,无论是一般的方法、字段,还是静态方法及字段。
  3、具有包访问权限的类,其成员声明为public和protected是没有意义的,因为在包外不能访问也


相关文档:

IBM FileNet Content Java API 简介

2008 年 6 月 24 日
原文地址: http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0806wangys/
本文介绍 IBM FileNet P8 4.0 Platform 提供的 Content Java API。首先对 FileNet P8 Content Engine 和 API 进行概要介绍, 并说明了一些基本概念,随后详细介绍了 FileNet Content Engine提供的基于 EJB ......

java中如何使用amcharts


最近公司碰到需要用图表的形式显示一些数据,我就开始到网上查询,查到了jfreechart和amcharts,这两者我都实现过了,jfreechart最后生成图片,但是图片效果不是我想要的,然后又研究amcharts 它的效果确实很好,而且官方网站上还有好些例子可供下载,网址是:www.amcharts.com
(想要完成一个amcharts图形需要swfobjects. ......

java 培训

华杰教育是新乡最专业的软件实训基地,思科网络工程师考试中心、 JAVA、.NET、php软件培训中心、计算机等级考试培训中心  是豫北地区最大的IT软件教育机构!
软件实训:
         课程分为.net和java两个方向,有实训早餐和短期软件培训,
《实训早餐》项目:针对计算机及 ......

Java学习路线图


JAVA学习路线图
在开始之前有必要再讨论一下J2ME,J2SE,J2EE这些概念。J2ME,The
Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SE,Java 2
Platform,Standard Edition,我们通常所说的JDK(Java Development
Kit)包含在此,是J2EE的基础。J2EE,Java 2 Platform,Enterprise ......

OSGi是什么:Java语言的动态模块系统

之前51CTO曾发过一篇文章叫做《OSGi为什么重要:向模块化转移的主攻手
》,里面对于OSGi的优势进行了分析。不过,对于
究竟什么是OSGi,很多人仍然只有一个模糊的概念。本系列(你好,OSGi
)从基础开
始介绍了OSGi。本部分介绍OSGi是什么,以及OSGi容器的一些现状。(注:本文英文原文于08年3月发布在JavaWorld网站) ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号