版权声明:本文为博主原创文章,转载注明出处即可。 https://blog.csdn.net/bskfnvjtlyzmv867/article/details/86564567
包:库单元
- 一个Java源代码文件常被称为编译单元(转译单元),一个编译单元必须有一个后缀名
.java
,而在一个编译单元内只能有一个public
类,类名与文件名相同。其他非public
类主要是为public
类提供支持的; - 当编译一个
.java
文件的时候,文件中的每个类都会生成一个.class
文件(内部类不会),然后交给Java解释器去查找、装载和解释; - 编译过的代码生成的字节码文件通常放置在与源代码不同的目录中,但是必须保证JVM使用 CLASSPATH 可以找到该路径,否则会出现无法找到类的错误;
- 一个Java文件可能没有一个
public
类,这样类名可以随便定义,文件名也随意。
访问权限关键字
-
如果没有指明访问权限关键字,则意味着是“包访问权限”,有时可表示成
friendly
,意思是对于当前包的其他类都能够可见,对于包外相当于private
; -
如果两个或者多个Java文件位于磁盘同一目录,同时都没有给自己设置
package
,Java会有默认包的概念,将它们自动看作是隶属该目录的默认包之中,使得它们能够拥有包访问权限; -
protected
是相对于继承概念设计的,如果一个子类在新的包中继承了父类,受到包访问权限的限制,子类无法访问父类的一些成员,如果要解决这样的需求,可能需要将那些成员声明为public
,但是副作用是所有的类将都能访问。所以出现protected
,可以将那些父类成员用该关键字声明,使得不同包的子类能够的依然能够访问。类内部 包内 包外子类 包外 public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × ×
类的访问权限
类既不可以是 private
,也不能说 protected
的,内部类可以是这两种。类只能是 public
或者包访问权限的,如果不希望其他类对该类有访问权,可以将类的构造器进行屏蔽。