关于接口(interface)实例化的问题???
我从这个网页知道 接口不能实例化,我这里把问题写出来.
:
我的认识是:
因为List是一个接口.故我不能这样使用:
List<MyObj> mlist=new List<MyObj>();
我的问题是:
android中的View类有 OnClickListener 这个接口,可是我发现 OnClickListener 这个接口就大量的new:
如下:
btn1.setOnClickListener(new View.OnClickListener() { ///<-------设置监听事件。
@Override
public void onClick(View v) {
.............
}
});
请问你 这个 onClickListener 为什么可以被实例化呢,谢谢!
------解决方案--------------------匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。 可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
*/
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x = 3;
public void function()
{
//匿名内部类
new AbsDemo()
{
int num = 9;
void show()
{
System.out.println("num==="+num);
}
}.show();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
new Outer().function();
}
}