匿名内部类
是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。
开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,
- 定义子类
- 重写接口中的方法
- 创建子类对象
- 调用重写后的方法
我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快
捷方式。
说白了,就是为了偷懒实现接口。直接看例子理解:
定义接口:
interfance Product
{
public double getPrice();
public String getName();
}
这里面Anonymous类里面的test方法,依赖于Product接口,但是接口显然是没有实现的。如果常规做我们还需要先去写个实现类来实现Product接口。但是,有了匿名内部类,就可以简便得操作了。
基本形式如下:
new 实现接口()
{
//匿名内部类类体部分 --写具体的类实现
}
其中重点注意这一行
/*
1.等号右边:定义并创建该接口的子类对象
2.等号左边:是多态,接口类型引用指向子类对象
*/
Anonymous as= new Anonymous ();
这里又引入多态概念,多态简单来说就是同一个行为通过不同的对象表达出不同的特性。形式就是 父类 name = new 子类(),也是一种简化代码的写法,