在编写类的时候可以使用两种方式定义类:
    public class定义类:
    class定义类:

1,如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。(一个java 程序中至多只能有一个public 类,也可以没有任何public类)。

2,如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。(class文件是根据java文件中的class声明生成的。)

3,在一个*.java的文件中,只能有一个public class的声明,但是允许有多个class的声明 。(一个java程序中有几个class就会被编译成几个class文件)。

为什么java源文件不可以有两个public类?

简单的说,是由JAVA机制决定的,这是硬性规定,不遵守就会出错。比如C#里就可以在一个源文件里有多个public类,也可以只有一个,这是看各个不同语言所定的规则了。
细究的话,只能说JAVA这个样规定有什么好处呢?
简单地说来,是为了更好地组织代码。
再追究,为什么这样能更好地组织代码呢?这得从JAVA类的访问机制说起了。
JAVA中可以让用户(当你编译好类之后,所有使用这些类的其它类,因为在不同的包中)访问的类只能是public,没有加public 的只有包的访问权限,用户无法访问 ,这样的类是作为辅助public类的作用出现的,如果不在public类中出现过,那么可以说这些类是没用的。
所以,JAVA就规定一个源文件只能有一个public类,而且文件名必须与它相同,这样一个文件形成了一个功能单元,而不会存在一个文件有很多功能单元这样的混乱局面,这样管理起代码来就有条理多了。

java中关于public class的更多相关文章

  1. 在JAVA中利用public static final的组合方式对常量进行标识

    在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这 ...

  2. java中class,public的用法

    java中class,public的用法 一.Java访问权限饰词(access specifiers) Java有public.protect.friendly.private四种访问权限,并且这四 ...

  3. Java中的public、protected、default和private的区别

    (1)       对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)      ...

  4. 如何区别java中的public,protected,default,private

    ================Public====================== 1>首先我们介绍public关键字,从字面意义上出发,public意为公共的,可见它的访问权限是很宽松的 ...

  5. java中的public,protected,private权限修饰

    public和private基本没问题,主要是默认的和protected之间的区别 同一包中默认的和protected一样,所以来看看不同包的情况 看下如下代码,两个类位于不同包: public cl ...

  6. Java中的public、private、protected,函数修饰符

    1.public:public表明该数据成员.成员函数是对所有用户开放的,项目中其他脚本都可以直接进行调用 2.private:private表示私有,私有的意思就是除了脚本之外,项目中其他类都不可以 ...

  7. [转]java中作用域public private protected 以及不写的区别

    在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友 ...

  8. java中的 public protected friendly private

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  9. 一看你就懂,超详细java中的ClassLoader详解

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...

随机推荐

  1. WebApi(一)-实现跨域返回格式支持json

    1.创建webapi

  2. JS获取终端屏幕、浏览窗口的相关信息

    查看终端屏幕相关信息,在windows系统的控制面板可以查到分辨率且可以设置,更具体的浏览器可视窗口等信息则需要借助其他工具.而在程序里需要动态获取时该怎么做呢? 琢磨的一个js方法,供大家参考.如下 ...

  3. Contest20140711 loop 数论

    loop|loop.in|loop.out 题目描述: 有N个点. 现在重复这样的操作: 随机找一个出度为0的点p1,随机找一个入度为0的点p2,连一条有向边从p1指向p2.直到没有出度为0的点. 统 ...

  4. CentOS中JAVA_HOME的环境变量设置

    http://blog.csdn.net/wind520/article/details/9308809 运行Java应用的时候,提示无法找到JAVA_HOME,查询java -version [ji ...

  5. Life Forms

    poj3294:http://poj.org/problem?id=3294 题意:就是求n个串的中一个最大的子串,这个子串在超过n/2的串中出现. 题解:这是一道好题.首先一种解法就是用后缀数组来搞 ...

  6. JavaWeb 文件上传 commons_fileupload方式

    import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadExcept ...

  7. Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析

    导出服务器原理解析 Highcharts图表导出(或下载)本质上是将SVG代码转换为不同文件格式的过程,用到的工具是batik,所以所谓导出服务器,只不过是调用batik,将SVG代码转换并下载.下图 ...

  8. android5.0中RecycleView的用法

    最近学习了android5.0中新增的一个组件RecycleView,是用来代替当前的listview开发的,是因为在RecycleView中已经有了viewholder缓存,并且不同的item之间可 ...

  9. 怒刷BZOJ记录(二)1038~10xx

    我实在是太弱了...不滚粗只能刷BZOJ了...这里来记录每天刷了什么题吧. 2015-8-13: 正式开始! 1030[JSOI2007]文本生成器                       | ...

  10. Eclipse添加快速查找Dao中方法所对应的Mybatis XML映射SQL的插件

    Dao关联Mybatis快速查找的插件安装地址:http://dl.bintray.com/harawata/eclipse 安装步骤: ①Eclipse ==> Help ==> Ins ...