内部类就是定义在一个类中的类
内部类的分类:
成员内部类
在外部类成员位置定义的类
局部内部类
在外部类成员方法中定义的类
public class A {
int num=3;
//成员内部类
public class B{
}
public void show() {
//局部内部类
class C{
}
}
}
匿名内部类
它是内部类一种简化方式!
格式:
new 类(可以是具体类,也可抽象类)名/接口名(){
重写方法;
};
匿名内部类的好处:
省去了繁杂的代码,不需要定义类里面的子类或者接口的子实现类,写法比较简单!
匿名内部类的本质就是:继承该类或者是实现了该接口的子类对象!
以接口为例:
//定义接口
public interface A {
public void sleep();
}
//接口的子实现类
public class B implements A {
@Override
public void sleep() {
System.out.println("动物和人都需要休息");
}
}
public class C {
public void method() {
A a=new A() {
public void sleep() {
System.out.println("动物和人都需要休息");
}
};//相当于接口的子实现类
a.sleep();
}
}