一、包
- 包的作用:管理java文件、解决同名文件冲突
- 定义包:[package 包名](必须放在源程序第一行,包名间用点隔开)
eg:package com.imooc.myclass
- 系统的包: [java.功能.类]
eg: java.lang.类——包含java语言基础的类
java.util.类——包含java语言中各种工具类
java.io.类——包含输入输出相关的类
- 包的使用:
- 可以通过import关键字导入,如:import com.imooc.myclass;
- java中包的命名规范是全小写字母;
- 使用时不但可以加载包下所有的文件(如:com.imooc.*),也可以加载某个子包下的所有文件(如:com.imooc.music.*)。
二、内部类
- 内部类:定义在另一个类里的类;与之对应,包含内部类的类称为外部类。
- 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
- 内部类的方法可以直接访问外部类的所有数据,包含私有的数据。
- 内部类所实现的功能使用外部类同样可以实现,只是有时候使用内部类更加方便。
- 外部类不能直接访问内部类的成员和方法。
- 如果外部类和内部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字。
- 内部类分为:成员内部类、静态内部类、方法内部类、匿名内部类。
-
- 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接new一个内部类对象,即:内部类 对象名=外部类对象.new 内部类()。在使用非静态内部类时,要求先实例化外部类才可以使用内部类。关于非静态内部类,我们可以把它理解成外部类的成员变量。
- 静态内部类是static修饰的内部类,这种内部类的特点是:
- 静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问。
- 如果外部类的静态成员和内部类的成员名称相同,可通过"类名.静态成员"访问外部类的静态成员;如果外部类的静态成员和内部类的成员名称不相同,可通过成员名直接调用外部类的静态成员。
- 创建内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名=new 内部类()。
- 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。(由于方法内部类不能在外部类的方法以外的地方调用,因此方法内部类不能使用访问控制符和static修饰符)