转载声明:商业转载请联系作者获得授权,非商业转载请注明出处.原文来自 © 呆萌钟【JavaSe必知必会】41-Java内部类
内部类概述
把类定义在其他类的内部,这个类就被称为内部类。
举例
在类A中定义了一个类B,类B就是内部类。
内部类的访问特点
内部类可以直接访问外部类的成员,包括私有。外部类要访问内部类的成员,必须创建对象
内部类位置
按照内部类在类中定义的位置不同,可以分为如下两种格式:
成员位置(成员内部类)局部位置(局部内部类)
成员内部类
外界如何创建对象
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类的常见修饰符
private 为了保证数据的安全性static 为了让数据访问更方便
被静态修饰的成员内部类只能访问外部类的静态成员内部类方法被静态修饰后的方法
静态方法非静态方法
局部内部类
可以直接访问外部类的成员可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能局部内部类访问局部变量的注意事项:
必须被final修饰为什么呢?
因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从对内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用final修饰,这样,在堆内存里面存储的其实是一个常量值。通过反编译工具可以看一下。
匿名内部类
就是内部类的简化写法前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类格式:
new 类名或者接口名(){重写方法}本质:
是一个继承了类或者实现了接口的子类匿名对象