内部类
一共有四种内部类,分别是成员内部类、局部内部类、匿名内部类、静态内部类。
为什么需要内部类
每个内部类都能继承一个接口的实现,所以不论外部类是否继承了某个实现,对于内部类没有影响,内部类使得多继承变得更加完整。
定义成员内部类
一个类可以定义在另一个类的内部,定义在类内部的类可以称之为Inner,外部的类称之为Outer;Inner类定义在Outer类的内部,通常只服务于Outer类,不对外具备可见性。Inner类可以直接调用Outer类的成员及方法(包括私有的)。例如:
从如上代码可以看出,可以直接从Inner类中直接调用Outer类私有变量name。
创建内部类对象
一般情况下,Inner对象会在Outer对象中创建,Inner对象中会有一个隐式的引用指向创建它的Outer对象。
class YNHello {
private String name="hello";
class SayHi{
public void say(){ //访问修饰符为
实例化一个新的内部类时,需要使用外部类的实例.new的方式进行实例化。
匿名内部类
也可以用lambda表达式实现这种方式,lambda表达式是JAVA8的新特性,也是被广大开发者期待已久的功能。Lambda表达式支持将代码块作为参数,允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。
面试题
内部类有独立的.class吗?
有,每个类都会有相对应的.class文件,$1/2这种形式的文件都是内部类编译后的结果
大家记得给关阿姨点个关注呦

标签: