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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张占忠 中级黑马   /  2012-12-27 15:50  /  1437 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天,突然看到一个没见过的东西,一查才知道匿名内部类。查了半天资料,没找到一点头绪!
谁可以解释一下,在什么情况下才用到匿名内部类!他都有什么特性,使用方法又是什么?

2 个回复

倒序浏览
(1).匿名内部类其实就是内部类的简写形式。
(2).定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
(3).匿名内部类的格式:new 父类或者接口(){定义子类的内容}
(4).其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
(5).匿名内部类中定义的方法最好不要超过3个。不然定义和调用的时候,可读性差。
示例:
abstract class Rrr{
     abstract void show();
}
class Outerr{
     int temp = 5;
     /*class InnerT extends Rrr{
           void show(){
                System.out.println("内部类");
           }
     }*/
     public void via(){
            new Rrr(){                             //这是一个子类对象
                 void show(){
                     System. out.println( "匿名内部类" );
                }
           }.show();
            //new InnerT().show();
     }
}
public class InnerCast {
     public static void main(String[] args) {
           Outerr ou = new Outerr();
           ou.via();
     }
}
回复 使用道具 举报
  1. abstract class AbsDemo
  2. {
  3.         abstract void show();
  4.        
  5. }


  6. class Outer
  7. {
  8.         int x = 3;

  9.        

  10.         public void function()
  11.         {
  12.        


  13.        

  14.                 AbsDemo d = new AbsDemo()
  15.                 {
  16.                         int num = 9;
  17.                         void show()
  18.                         {
  19.                                 System.out.println("num==="+num);
  20.                         }
  21.                         void abc()
  22.                         {
  23.                                 System.out.println("haha");
  24.                         }
  25.                 };

  26.                 d.show();
  27.                 //d.abc();//编译失败;

  28.                



  29.         }
  30. }



  31. class InnerClassDemo4
  32. {
  33.         public static void main(String[] args)
  34.         {
  35.                 new Outer().function();
  36.         }
  37. }


复制代码
匿名内部类  我刚看到这   
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
        内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。        可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马