详述Java内部类
内部类是将一个类定义在另一个类里面的类,称为内部类。内部类可以分为有名内部类和匿名内部类,顾名思义,有名内部类有自己的类名,匿名内部类没有类名。
有名内部类
public class Body{
//有名内部类
class Heart{
public void work() {
System.out.println("心脏在跳动");
}
}
{
//调用内部类方法1,new前面隐藏关键字this,代指body
Heart heart = new Heart();
}
public static void main(String[] args) {
Body body = new Body();
//调用内部类方法2,必须指明哪个类调用的
Heart heart = body.new Heart();
heart.work();
}
}
匿名内部类:主要用于重写
public class Body{
//匿名内部类
static Mammal mammal = new Mammal(){
@Override
public void move() {//重写Mammal中的move方法
System.out.println("鲸鱼在游动");
}
};
public static void main(String[] args) {
mammal.move();
}
}
注意:
- 普通类编译后的文件为 类名.class
- 有名内部类编译后文件为 类名$内部类名.class
- 匿名内部类编译后文件为 类名$数值.class