关于包(Java Silver)
关于包装
包装是什么
为了整理班级的机制。
Java语言中存在许多类。因此,将大量类按目的和功能进行整理,可以更方便地按目的使用,并且也更容易管理类。
包声明的方法
在中文中,它被声明为「包名;」。
(正)它在源代码的开头行中进行描述。
package jp.co.xxx;
import aaa.*;
public class Hello(){
System.out.println("hello world!");
}
在编写代码时,import语句出现在包声明之前。(错误)
import aaa.*;
package jp.co.xxx;
public class Hello(){
System.out.println("hello world!");
}
只有注释才可以在包声明之前进行描述,必须在源代码的第一行进行描述。
的是什么
-
- 名前空間を提供し、名前の衝突を避ける
-
- アクセス制御機能を提供する
- クラスの分類を可能にする
提供命名空间以避免名称冲突。
如果包名不同,即使是同一类名的类也会成为不同的类。
如果存在相同名称的类,编译器和JVM无法确定使用哪个类,可能会导致编译错误或意想不到的类被使用。
为了避免名称重复,可以使用它。
编译器和JVM通过”包名.类名”来识别类。
因此,包名最好是唯一的。
顺便说一下,使用”包名.类名”来表示的是完全限定类名,只用”类名”的表示形式则称为简单名。
完全修饰类名:「java.lang.String」
简单名称:「String」
提供访问控制功能
通过将类分为多个包来实现按包进行访问控制。通过将包内的类分为公开类和非公开类,可以防止使用不符合预期的类。
访问修饰符的种类
“private”:只能从同一类内访问。
“protected”:即使是在不同的包或同一包中的类,也可以从继承了该类的子类内部访问。
“public”:可以从所有类中访问。
“无”:同一包中的所有类都可以访问。
例:
声明一个属于jp.co.xxx包的公共Hello类。
package jp.co.xxx;
public class Hello(){
System.out.println("hello world!");
}
声明Bye类属于jp.co.xxx包。
package jp.co.xxx;
class Bye(){
System.out.println("Bye!");
}
公有的Hello类可以被属于其他包的类调用,但是非公有的Bye类无法被调用。
使分類班级成为可能
包是按照文件夹结构组织的。在源文件夹的子文件夹中的文件夹被视为包。
比如说,如果是”jp.co.xxx.Hello”类,对应的文件路径就是”\jp\co\xxx\Hello.class”。
类必定属于某个包,省略包声明的类会被解释为属于默认的无名包。没有属于任何包的类是不存在的。