1. Package 概念

Package is a way of grouping related classes and interfaces together.
其实就是我们电脑系统中的文件夹,包里存放的是类文件和Java源文件。当类文件很多的时候,通常我们会采用多个包进行存放管理他们。
在项目中,我们将相同功能的类放到一个包中,方便管理。并且日常项目的分工也是以包作为边界。

类中声明的包必须与实际class文件所在的文件夹情况相一致,即类声明在a包下,则生成的.class文件必须在a文件夹下,否则,程序运行时会找不到类。

A. 声明格式

package 包名.包名.包名…;
如:黑马程序员网址itheima.com那么网址反写就为com.itheima
传智播客itcast.cn 那么网址反写就为 cn.itcast
注意:声明包的语句,必须写在程序有效代码的第一行(注释不算)

B. 导入包

在访问类时,为了能够找到该类,必须使用含有包名的类全名(包名.类名)。如:

  1. java.util.Scanner scanner = new java.util.Scanner(System.in);

上面的写法很麻烦,我们可以通过import导包的方式来简化。可以通过导包的方式使用该类,可以避免使用全类名编写(即,包类.类名)。如:

  1. import java.util.Scanner;
  2. Scanner scanner = new Scanner(System.in);

注意:

  • Classes and Interfaces under the same package can be used directly, no need to import.
  • Java cannot import classes with the same name and under different packages.

    C. 静态导入 import static

    如果本类中有和静态导入的同名方法会优先使用本类的静态资源。 ```java /*
    • JDK1.5新特性,静态导入
    • 减少开发的代码量
    • 标准的写法,导入包的时候才能使用
    • import static java.lang.System.out; 最末尾,必须是一个静态成员 */ import static java.lang.System.out; import static java.util.Arrays.sort;

public class StaticImportDemo { public static void main(String[] args) { out.println(“hello”); int[] arr = {1,4,2}; sort(arr); } } ```

2. Modifiers 修饰符

A. Access Modifiers 访问修饰符

1) Access Modifiers on classes

  • public
  • package private(默认的) ==>Only visible to classes in its package.

    2) Access Modifiers on attributes and methods

    | | public | protected | default | private | | —- | —- | —- | —- | —- | | 同一类中 | ✅ | ✅ | ✅ | ✅ | | 同一包中(子类与无关类) | ✅ | ✅ | ✅ | | | 不同包的子类 | ✅ | ✅ | | | | 不同包中的无关类 | ✅ | | | |

B. final, static, abstract

static 静态修饰符 方法,成员变量
final 最终修饰符 类,方法,成员变量,局部变量
abstract 抽象修饰符 类 ,方法

我们编写程序时,访问修饰符一般放于所有修饰符之前,不同的权限修饰符不能同时使用。
同时,abstractprivatestatic, final不能同时使用;

C. 从修饰对象的角度总结:

1) 修饰能够使用的修饰符:public, final, abstract

2) 修饰成员变量能够使用的修饰符:

public, protected, default, private
final
static

3) 修饰构造方法能够使用的修饰符:

public, protected, default, private

4) 修饰成员方法能够使用的修饰符:

public, protected, default, private
final
static
abstract