转载自:https://blog.csdn.net/jingzi123456789/article/details/71515728

1.类的访问权限

  • 为了控制某个类的访问权限,修饰词必须出现在关键字class之前。例如:public class Student {}
  • 在编写类的时候可以使用两种方式定义类:
    (A)public class定义类
    (B)class定义类

2.public class定义类

  • 如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
  • 被public修饰的类可以被其他包访问。如果现在的库名是com,那么就可容易通过下面的声明访问Student:
import com.Student;
或者
import com.*;

3.class定义类

  • 如果一个类声明的时候使用了class进行了声明,则作为启动类的名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。
  • 没有public修饰的类,该类就拥有了包访问权限,即该类只可以用于该包之中。

4.class定义的类只具有包访问权限,该类不能被其他包访问

package access.cookie2;public class Cookie
{Cookie(){System.out.println("Cookie constructor");}public void bite(){System.out.println("bite");}
}  
package access;
import access.cookie2.*;public class ChocolateChip2
{public ChocolateChip2(){System.out.println("ChocolateChip2 constructor");}public static void main(String[] args){ChocolateChip2 x = new ChocolateChip2();Cookie y = new Cookie();y.bite();       }
}
  • 编译、运行:

  • 如果把Cookie修改为:public class Cookie{}。再编译、运行:

5.小结

  • 每个编译单元(文件)都只能有一个public类。即每个编译单元都有单一的公共接口,用public类实现。此时,mian()就必须要包含在public类中。
  • public类的名称必须完全与含有该编译单元的文件名称一致,包括大小写。如果不匹配,编译时错误。
  • 如果编译单元(文件)中不含有一个public类,此时编译单元文件名称可以与启动类名称可以不一致,即可以随意对文件命名。这样的话,main()不是必须要放在public类中才能运行程序。
  • 总的来说,一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。至于main()不是必须要放在public类中才能运行程序。

参考:http://www.jb51.net/article/39892.htm
http://www.cnblogs.com/stevengerrard/p/4067422.html
《java编程思想》

JAVA中类的public class与class的区别详解相关推荐

  1. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  2. java中public_java中public class与class的区别详解

    以下是对java中public class与class的区别进行了分析介绍,需要的朋友可以过来参考下 在编写类的时候可以使用两种方式定义类:public class定义类: class定义类:如果一个 ...

  3. java之public class和class声明区别详解 (转)

    在编写类的时候可以使用两种方式定义类:     public class定义类:     class定义类:     如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名 ...

  4. java serializable用法_JAVA序列化Serializable及Externalizable区别详解

    序列化简介 Java 的对象序列化将那些实现 Serializable 接口的对象转换成一个字节序列,并能在之后将这个字节序列完全恢复为原来的对象. 这就意味着 Java 对象在网络上的传输可以不依赖 ...

  5. java integer == int_Java中int和Integer的区别详解

    1.Java 中的数据类型分为基本数据类型和复杂数据类型 int是前者>>integer 是后者(也就是一个类) 2.初始化时>> int i =1; Integer i= n ...

  6. Java中的nextInt()和next()与nextLine()区别详解

    首先的一个区别是: nextInt()读取结果为一个int类型数据,返回int值 nextFloat()读取结果为float类型,返回float值 next()读取结果为String类型,返回stri ...

  7. Java中类、抽象类、接口之间的区别和联系。

    Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...

  8. java 三种将list转换为map的方法详解

    这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下 java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法: 1) ...

  9. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. Spring Boot+Docker微服务分布式服务架构设计和部署案例
  2. 专题解读 |「知识图谱」领域近期值得读的 6 篇顶会论文
  3. 我的MVC之旅(3)--------MVC Music Store 第三篇 Views and ViewModels [翻译]
  4. DE19 Introduction to the Laplace Transform
  5. 数字图像空间域 频域
  6. Sketch软件51.3 51.2 50.2 50 52 53 54 55 56 57 58正版激活码序列号 支持在线升级
  7. C++ 单例模式(饿汉模式、懒汉模式)
  8. 数据可视化基本套路总结
  9. 人工智能迅猛发展,如何应对避免失业?
  10. aspose.total for C++ Crack
  11. Bitmap 图片缩放
  12. JavaScript Canvas2D实现SpriteSheet角色动画
  13. SQL中row_numer、rank、dense_rank的区别与用途
  14. c语言怎么写tg的反函数,关于y=x对称的两个函数表达式有什么特点 改怎么写 比如对数函数...
  15. 单身的我写了一个七夕表白程序
  16. 第07讲B文件与文件夹操作
  17. mysql投影和选择区别_计算机二级。选择和投影到底有什么区别?
  18. 【论文学习】《Who is Real Bob? Adversarial Attacks on Speaker Recognition Systems》
  19. 《魔灵保卫者》服务端架构及实现
  20. 参考文献管理软件Jabref和Zotero使用笔记

热门文章

  1. RTEMS线程调度算法(RMS)详解
  2. java计算机毕业设计歌唱比赛积分管理系统MyBatis+系统+LW文档+源码+调试部署
  3. 【Jquery】-------JS实现关键字检索html内容,符合关键字的匹配项,进行标注背景色,可进行上一个,下一个切换定位
  4. win7 隐藏任务栏操作中心图标
  5. ETHBMC: A Bounded Model Checker for Smart Contracts
  6. 公司总监沦为家庭主妇:做威客让我重新破浪前行
  7. EMD和Hilbert
  8. shell编程-02-变量作用域
  9. 什么蓝牙耳机性价比高?目前最值得入手的蓝牙耳机
  10. 【FAQ】什么是 Canon EDSDK(EOS Digital SDK)