您的位置:首页 > 编程语言 > Java开发

java基础知识补漏(2)---匿名内部类

2012-06-28 14:29 253 查看
昨天在看mars的视频的时候,看到他提到匿名内部类,竟然不知,倍感羞耻,所以百度+google,总算瞧出了个一二三:

匿名内部类

1、定义:顾名思义,就是一个类里面,定义了一个内部类,而该类是没有名字的,其实严格应该这么说:一个类里面有一个没有名字的“类"。

     在android里面应用较多,声明方式更像是new一个接口或对象的感觉,但是我们知道接口不能实例化,所以我们就得new一个实现

     了接口方法的对象出来。

2、作用:①少定义一个类②函数回调,经常被作为一个对象参数传入

3、声明:new <类或接口><类主体>

4、与new对象的不同:对象的new是这样:Ojcect a=new A(),而内部类是:new A(){方法1;方法2...}

5、举例说明:<以下两段代码其实效果一样>

button.setOnClickListener(listener );

private View.OnClickListener listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String phonenum = phoneEditText.getText().toString();
Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phonenum));
startActivity(intent);
}
};// 在这里需要一个分号


button.setOnClickListener(new ButtonListener());

private final class ButtonListener implements View.OnClickListener
{
public void onClick(View v)
{
EditText mobileText = (EditText)findViewById(R.id.mobile);
String mobile = mobileText.getText().toString();
Intent intent = new Intent();
intent.setAction("android.intent.action.CALL");
intent.setData(Uri.parse("tel:"+ mobile));
startActivity(intent);
}
}


6、匿名内部类使用条件:

  ·只用到类的一个实例。
  ·类在定义后马上用到。
  ·类非常小(SUN推荐是在4行代码以下)
  ·给类命名并不会导致你的代码更容易被理解。

7、在使用匿名内部类时,要记住以下几个原则:

  ·匿名内部类不能有构造方法。
  ·匿名内部类不能定义任何静态成员、方法和类。
  ·匿名内部类不能是public,protected,private,static。
  ·只能创建匿名内部类的一个实例。
  ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
  ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: