在编写类的时候可以使用两种方式定义类:
    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. mvc action 参数绑定——值提供器【学习笔记】

    每次http请求的各种数据(表单数据.url的数据.路由数据等等)都保存在不同的IValueProvider接口的实现类中. 而IValueProvider接口的实现类是通过ValueProvider ...

  2. shuffle ----- mr 董西城

    http://dongxicheng.org/framework-on-yarn/apache-spark-shuffle-details/

  3. [BZOJ 2178] 圆的面积并 【Simpson积分】

    题目链接:BZOJ - 2178 题目分析 用Simpson积分,将圆按照 x 坐标分成连续的一些段,分别用 Simpson 求. 注意:1)Eps要设成 1e-13  2)要去掉被其他圆包含的圆. ...

  4. Ruby安装和简介

    Ruby下载地址:https://www.ruby-lang.org/zh_cn/downloads/ 我安装的是RubyInstaller.it is a self-contained Window ...

  5. [LeetCode#252] Meeting Rooms

    Problem: Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2] ...

  6. C - Point on Spira

      Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Pr ...

  7. 把这两天遇到的码(e)农(xin)题记下来

    1019: [SHOI2008]汉诺塔 1858: [Scoi2010]序列操作 1058: [ZJOI2007]报表统计

  8. js键盘控制DIV移动

    <style type="text/css"> html,body{overflow:hidden;}body{margin:0;padding:0;}pre{colo ...

  9. (转载)MySQL关键字ORDER BY的使用

    例子: mysql), d_id ), name ), age ), sex ), homeaddr )); // 可以看到首先按照d_id进行升序排列,排列好了之后, // 若d_id字段中有相同的 ...

  10. POI做题记录:第二届POI

    Trees Memory limit: 32 MB Trees occur very often in computer science. As opposed to trees in nature, ...