写在前面
作者简介:鲸海鹿林
博客主页:鲸海鹿林的主页
警醒语句:keep calm & carry on
本文简介:介绍了Java的包创建与引用,内部类的分类以及特点等内容。
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
活动地址:CSDN21天学习挑战赛
包
定义
一组具有共性的类的集合,习惯称为类库。
特点
同一个包中不能存在两个同名的类。
缺省时,系统会为每个源文件创建一个无名包,这个源文件中定义的所有类都隶属于该无名包,类之间可以互相访问非私有的域和方法,但无名包中的类无法被其他包中的类引用。
格式
package 包名;//必须放在程序的开头,且一个java文件中最多包含一个包
引用
- 使用import关键字在类前引入所需的类,如:
import java.util.Date;
- 使用import关键字在类前引入所需的类所在的包,如:
import java.util.*;
- 在引用类时使用包名作为前缀,如:
java.util.Date date = new java.util.Date();
作用
包可以规定类的成员的引用范围,通过访问修饰符来实现信息隐藏。
想要了解权限修饰符的小伙伴,请移步
内部类
定义
内部类也称为内嵌类或嵌套类,指嵌套在一个类中的类,而包含内部类的那个类被成为外层类。
tip:内部类的命名不能与外层类相同。
关系
内部类的使用依托于外层类,是逻辑上的所属关系,与包的限制类似。
作用
主要用于实现没有通用意义的功能逻辑。
分类
以是否被static关键字修饰分为静态内部类与成员类。
特点
内部类可以访问外层类的成员,内部类与外层类的其他成员一样,可以被访问修饰符修饰。
在外层类中通过定义内部类的实例对象成员,在实例方法中创建内部类的实例访问内部类。
在内部类中使用this关键字指向的是内部类,若想指向外层类则需使用[外部类名.this]。
静态内部类
内部类被static关键字修饰后,不需要实例化外层类便可直接通过[外层类名.内部类名]直接访问。
静态内部类无法访问外层类的非静态成员。
局部内部类与匿名内部类
局部内部类
定义
方法中也可以定义内部类,这种定义在方法中的类称为局部内部类。
格式
public class Test
{
public void method()
{
class Inner{
//TODO...
}
}
}
特点
- 局部内部类作用范围为包含其的方法区域。
- 在局部内部类中可以访问外部类的所有成员。
- 局部内部类与局部变量一样,不能使用访问控制修饰符和static修饰符修饰。
- 局部内部类的成员(属性,方法,类)无法使用访问控制修饰符和static修饰符修饰。
- 局部内部类只能访问方法中定义的常量,遵循先定义后使用的原则。如果方法中的成员与外层类中的成员同名,则可以使用[外层类.this.成员名]的形式访问外层类中的成员。
匿名内部类
定义
在创建对象的同时定义类的实现,但不规定类名,Java将其定位匿名内部类。
使用场景
只需使用一次的类(常用于事件驱动编程中)。
格式
new 父类构造函数(参数列表) | 实现接口(){
//匿名内部类的类体部分
}
特点
匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。
匿名内部类不能是抽象类。
匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。