A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高廷平 中级黑马   /  2012-10-7 13:23  /  1289 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package primarytest;
/*
匿名内部类:
语法:
   new 外部类名或者接口()
   {
    //重写父类方法(一般是抽象的方法)
   };
   
使用: 简化书写,参数传递(父类或者接口中的方法比较少时用)
自我理解:匿名内部类是对父类或者接口的匿名实现,同时又得到
一个实现子类的对象。只不过这个子类和对象没有名字,是匿名的
可以用父类的引用指向这个对象,去调用它实现的父类的同名的方法。
*/
public class InnerClassOfNiMing
{
public static void main(String[] args)
{
  
  //匿名内部类
  new Outertest()//在声明对象时对其进行了重写,就如创建一个子类及其对象一样,它是一步合成的
  {
   public void show()
   {
    System.out.println("匿名内部类!");
   }
  }.show(); //new ---- ;是一条语句
  
  
  /*
    匿名内部类就如一个对象,只不过这个对象
    的类的实体在调用中才刚定义。
    也可以理解为匿名重写!
    常用在匿名重写传参,在Swing组件中添加
    事件监听器就常这样干。
   */
  
  //匿名类作为参数传递
  new NiM().myshow(new Outertest()
  {
   public void show()//重写Outertest接口的show方法
   {
    System.out.println("匿名内部类!");
   }
  });//这是一个语句
}
}
interface Outertest//接口
{
void show();//抽象方法,默认:public abstract
}
class NiM
{
public void myshow(Outertest ot)//参数设置成接口
{
  ot.show();
  //调用接口中的抽象方法,当子类实现了接口时,调用的是相应的实现类的对应的方法
}
}

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

1 个回复

正序浏览
非常好.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马