8、包和导入、范围修饰符、内部类

168 阅读2分钟

一、包和导入

1.1、包

包的本质就是文件夹,创建包来存放java类是为了让java类便于管理

包的命名:

规则:

  1. 由数字、字母、下划线、美元符组成
  2. 数字不能开头
  3. 不能和关键字重名

规范:

  1. 全小写,多个单词间用.连接
  2. 公司域名倒着写

常见的包的命名:

  1. test:测试包
  2. bean/entity/domain:实体包
  3. serive:业务包
  4. util/utils:工具包
  5. dao:data access object 数据访问对象,数据库的功能
  6. vo:value object

关键字:package

package 包结构;
// 用来表示当前类属于哪个包中

注:这条语句必须是java文件的第一条语句

1.2、导入

当一个包中的类使用到了其他包中的类时,需要将这个要使用类引入进来

关键字:import

import 包结构.类名;

如果导入的多个类在同一个包中,可以通过*来简化:

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
​
// 可以写成
import java.util.*;

注:

  1. lang包中类在使用时无需导入
  2. 包结构.类名这段内容称为全限定类名、类的完整路径、全类名、类全名

二、范围修饰符

范围修饰符也称为权限修饰符,它用来限制成员变量和成员方法的使用范围

public:公共的,任何类都能访问公共的成员

protected:受保护的,只能在同包中访问,其他包中只有子类能访问

[default]:默认的,只能在同包中访问

private:私有的,只能在本类中访问

publicprotected[default]private
本类中
同包中的其他类中×
其他包中的子类××
其他包中的无关类×××

三、内部类

3.1、概念

在一个类中定义的类就叫内部类(inner class),外面的类就叫外部类(outer class)

内部类的分类:

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类

内部类的特点:

  1. 内部类可以访问到外部类中的所有成员,包括私有的
  2. 内部类编译后也生成.class文件,文件名:外部类名$内部类名.class

3.2、成员内部类

概念:定义在其他类中成员位置上的类

特点:

  1. 成员内部类中只能定义非静态的属性和方法

成员内部类对象的创建方式:

外部类.内部类 对象名 = new 外部类().new 内部类();

注:在内部类中访问外部类的同名成员时外部类名.this.外部类中的同名成员

3.3、静态内部类

概念:使用静态修饰的成员内部类

特点:

  1. 静态内部类中可以定义非静态的成员,也可以定义静态的成员
  2. 静态内部类只能访问外部类中的静态成员

静态内部类对象的创建:

外部类.内部类 对象名 = new 外部类.内部类();

3.4、局部内部类

概念:定义在其他类中方法内部的类

特点:

  1. 局部内部类中只能定义非静态的成员
  2. 局部内部类的对象只能在定义它的方法中,局部内部类的定义之后创建

注:局部内部类编译后的.class文件的文件名:外部类$序号内部类.class

3.5、匿名内部类

概念:使用匿名的方式创建一个类的子类对象,匿名内部类本身就是一个对象

new 父类/接口(){
 // 重写
};

特点:

  1. 匿名内部类本身就是一个对象
  2. 一般匿名内部类中不会定义任何属性和方法
  3. 一般使用匿名内部类都是用于创建抽象类和接口的子类对象

注:匿名内部类编译后的.class文件的文件名:外部类$序号.class