前言
匿名内部类应该是属于java基础的知识点,后来我们在开发中使用的也不算很少了,只是我们可能没太注意自己所创建的或者使用的一些类就是匿名内部类,我看了排名很靠前的一些关于匿名内部类的一些 博客讲解的都很棒,只可惜跳跃的很大导致很多人不多看几次很难理解,我来把复杂简单化,如果有失误的大家一起来纠正!
匿名内部类
首先我们不妨把匿名内部类拆成“匿名”和“内部类”,在学Java过程中大家应该听说过匿名对象,匿名对象就是对象的简写格式,内部类就不用说了类里面又写一个类,如果您对内部类不是很清楚可以看看内部类相关的基础知识。
以上所述匿名内部类可以说成是内部类的简写格式。匿名内部类的前提
内部类必须继承或者实现一个外部类或者一个接口,
不妨看看下面的代码,这是正常的内部类
class Outer
{
int num = 4;
//这是内部类
class Inner
{
void show()
{
System.out.println("show...."+num);
}
}
public void method()
{
Inner in = new Inner();
in.show();
//等价于上面的调用
//new Inner().show();
}
}
下面我们尝试让它变成匿名类,注意前提:必须实现一个接口或外部类
abstract class Demo
{
abstract void show();
}
class Outer
{
int num = 4;
//这是内部类
/*class Inner
{
void show()
{
System.out.println("show...."+num);
}
}
*/
public void method()
{
//Inner in = new Inner();
//in.show();
//等价于上面的调用
//new Inner().show();
//这个就是匿名内部类
new Demo()
{
void show()
{
System.out.println("show...."+num);
}
}.show();//这是继承完复写父类方法
}
}
- 内部类的简写格式
匿名内部类:其实就是一个匿名子类对象。
格式:new 父类或接口()(子类内容)
以上只是简单的介绍匿名内部类,如何把内部类转化成匿名内部类的一些Demo,如果读者想进一步加以理解不妨可以看看匿名内部类的应用
点击该博客可以进一步了解匿名内部类