目录
一、package关键字
1. package关键字概述及使用
-
package
-
就是包,或者说就是文件夹,在包(文件夹)中对Java文件进行分类存放,整理
-
作用:如同在一个文件夹中不能有同名的两个文件一样,在同一个包中也不能有同名的两个Java文件,那么包就很好的解决了这个问题,让同名的文件处于不同的包下就行了
-
-
定义格式
-
package 要导入的包名;
-
多级包:用.分隔开
-
-
注意事项
- package语句必须是程序的第一条可执行语句
- package语句一个Java程序中只能有一个
- 如果没有package语句,则默认表示无包名
2. import关键字概述及使用
-
import
- 我们可以使用包的全路径进行不同包下类之间的访问,但是比较麻烦,这个时候就可以使用import关键字,将需要使用的类导入进来
- 格式
- import 包路径.类名;
- 导入包下具体的类,推荐使用
- 或import 包路径.*;
- 导入包下的所有类
- import 包路径.类名;
二、常见修饰符
1. 权限修饰符
- 种类 + public(公开的)、 protected(受保护的)、 default(默认的)、 private(私有的)
- 权限
修饰符/权限 | 本类 | 同包下(子类和无关类) | 不同包子类 | 不同包无关类 |
---|---|---|---|---|
private(私有的) | Y | N | N | N |
default (默认的) | Y | Y | N | N |
protected (受保护的) | Y | Y | Y | N |
public (公开的) | Y | Y | Y | Y |
2. 状态修饰符
- 种类
- static(静态的)、final(最终的)
- 抽象修饰符
- abstract(抽象的)
修饰符/权限 | 类 | 成员变量 | 成员方法 |
---|---|---|---|
static | 静态的,类所有 | 静态的,类所有 | |
final | 不能被继承 | 常量 | 方法不能被重写 |
abstract | 抽象类 | 抽象方法,没方法体 |
三、内部类
1. 内部类概述
- 概念
- 定义在另一个类中的类,称之为这个类的内部类
- 分类
- 成员内部类
- 定义在类中方法外,在成员位置
- 局部内部类
- 定义在方法内部,在局部位置
- 成员内部类
- 访问特点
- 内部类访问外部类
- 可以直接访问外部类的成员,包括私有的
- 外部类访问内部类
- 外部类访问内部类成员,必须创建对象
- 内部类访问外部类
2. 成员内部类
- 访问外部类
- 直接访问
- 访问内部类
- 使用内部类对象访问
- 外部类名.内部类名 对象名 = 外部对象名.内部对象名;
- 成员内部类的修饰符
- private
- 保证数据的私有性及安全性
- static
- 为了方便的访问数据
- 注意事项
- 静态内部类访问的外部类成员必须是静态的
- 成员方法可以是静态的也可以是非静态的
- 访问静态成员内部类
- 外部类名.内部类名 对象名 = new 外部类名.内部类名();
- private
3. 局部内部类
- 访问外部类
- 直接访问
- 访问内部类
- 创建内部类对象,通过对象直接调用内部类的方法,来使用局部内部类的功能
- 为什么局部内部类访问的局部变量要用final修饰
- 因为对象比成员变量释放的迟,如果不用final修饰,局部变量在方法结束后就消失了,而此时局部内部类的对象可能还会使用局部变量,所以要用final修饰,存储在堆中,延长局部变量的生命期
4. 匿名内部类
- 使用场景
- 类或接口中,可以是抽象类
- 什么是匿名内部类
- 其实就是局部内部类的简写形式,可以理解为局部内部类的一个对象
- 当匿名内部类只调用很少几次时使用
- 也可以给匿名内部类命名,多次调用
- 格式
- new 类名或接口名(){
重写方法;
};
- new 类名或接口名(){
- 作用
- 使用内部类的成员(匿名内部类的成员变量和成员方法),和局部内部类的对象作用相似
- 作为参数传递
- 匿名内部类中的this关键字
- 就是指的匿名内部类本身,或者说匿名内部类的对象