日期:2014-05-20  浏览次数:20671 次

关于接口(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();
}
}