一、包和导入
1.1、包
包的本质就是文件夹,创建包来存放java类是为了让java类便于管理
包的命名:
规则:
- 由数字、字母、下划线、美元符组成
- 数字不能开头
- 不能和关键字重名
规范:
- 全小写,多个单词间用
.连接- 公司域名倒着写
常见的包的命名:
- test:测试包
- bean/entity/domain:实体包
- serive:业务包
- util/utils:工具包
- dao:data access object 数据访问对象,数据库的功能
- vo:value object
关键字:
packagepackage 包结构; // 用来表示当前类属于哪个包中注:这条语句必须是java文件的第一条语句
1.2、导入
当一个包中的类使用到了其他包中的类时,需要将这个要使用类引入进来
关键字:
importimport 包结构.类名;如果导入的多个类在同一个包中,可以通过
*来简化:import java.util.ArrayList; import java.util.Random; import java.util.Scanner; // 可以写成 import java.util.*;注:
lang包中类在使用时无需导入包结构.类名这段内容称为全限定类名、类的完整路径、全类名、类全名
二、范围修饰符
范围修饰符也称为权限修饰符,它用来限制成员变量和成员方法的使用范围
public:公共的,任何类都能访问公共的成员
protected:受保护的,只能在同包中访问,其他包中只有子类能访问
[default]:默认的,只能在同包中访问
private:私有的,只能在本类中访问
public protected [default] private 本类中 √ √ √ √ 同包中的其他类中 √ √ √ × 其他包中的子类 √ √ × × 其他包中的无关类 √ × × ×
三、内部类
3.1、概念
在一个类中定义的类就叫内部类(inner class),外面的类就叫外部类(outer class)
内部类的分类:
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
内部类的特点:
- 内部类可以访问到外部类中的所有成员,包括私有的
- 内部类编译后也生成
.class文件,文件名:外部类名$内部类名.class
3.2、成员内部类
概念:定义在其他类中成员位置上的类
特点:
- 成员内部类中只能定义非静态的属性和方法
成员内部类对象的创建方式:
外部类.内部类 对象名 = new 外部类().new 内部类();注:在内部类中访问外部类的同名成员时
外部类名.this.外部类中的同名成员
3.3、静态内部类
概念:使用静态修饰的成员内部类
特点:
- 静态内部类中可以定义非静态的成员,也可以定义静态的成员
- 静态内部类只能访问外部类中的静态成员
静态内部类对象的创建:
外部类.内部类 对象名 = new 外部类.内部类();
3.4、局部内部类
概念:定义在其他类中方法内部的类
特点:
- 局部内部类中只能定义非静态的成员
- 局部内部类的对象只能在定义它的方法中,局部内部类的定义之后创建
注:局部内部类编译后的
.class文件的文件名:外部类$序号内部类.class
3.5、匿名内部类
概念:使用匿名的方式创建一个类的子类对象,匿名内部类本身就是一个对象
new 父类/接口(){ // 重写 };特点:
- 匿名内部类本身就是一个对象
- 一般匿名内部类中不会定义任何属性和方法
- 一般使用匿名内部类都是用于创建抽象类和接口的子类对象
注:匿名内部类编译后的
.class文件的文件名:外部类$序号.class