黑马程序员技术交流社区

标题: 怎样创建匿名内部类? [打印本页]

作者: 草上飞    时间: 2012-10-21 21:43
标题: 怎样创建匿名内部类?
怎样创建匿名内部类?
作者: 鲁中需    时间: 2012-10-21 21:56
1.什么时候用到匿名内部类:
    只用到类的一个实例。
    类在定义后马上用到。
    类非常小(SUN推荐是在4行代码以下)
    给类命名并不会导致你的代码更容易被理解
2.如何创建内部类
   匿名内部类不能有构造方法。
   匿名内部类不能定义任何静态成员、方法和类。
   匿名内部类不能是public,protected,private,static。
   只能创建匿名内部类的一个实例。
    一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
   因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
   
作者: 王健宇    时间: 2012-10-21 22:11
interface A{
        public void println();
}
class X{
        public void fun1(){
                this.fun2(new A(){
                        public void println(){
                                System.out.print("hello world");
                        }
                }
);
        }
        public void fun2(A a){
                a.println();
        }
}
public class Nolnner {
        public static void main(String args[]){
                new X().fun1();
        }
}
红色的部分定义了一个匿名内部类?希望对你有所帮助
作者: 张其辉    时间: 2012-10-21 22:16
匿名内部类必须有个前提:内部类必须继承或实现一个外部接口或类。
格式:new 父类或接口 (){子类内容}
例:abstract class demo
{
     abstract void show();
}
class Outer
{
     int num=1;
     class Inner extends demo
     {
          void show(){System.out.println(num);}
     }
     public void method(){new Inner().show();}//上面写的代码不是匿名的写法
    /*下面为匿名写法
    new demo() {
         public void show()
         {
               System.out.println(num);
         }
}这其实就是一个有点胖的对象而已
   */
}希望对你有用
作者: ﹏゛心被伱牵    时间: 2012-10-22 09:19
匿名内部类有个前提:内部类必须继承或实现一个外部接口或类。或者该匿名内部类只使用一次。
new Thread()
                {
                        public void run()
                        {
                                for(int x=0; x<100; x++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"....."+x);
                                }
                        }
                }.start();   这就是匿名内部类对象,只使用一次的情况。
               


                for(int x=0; x<100; x++)
                {
                        System.out.println(Thread.currentThread().getName()+"....."+x);
                }

                Runnable r  = new Runnable()
                {
                        public void run()
                        {
                                for(int x=0; x<100; x++)
                                {
                                        System.out.println(Thread.currentThread().getName()+"....."+x);
                                }
                        }
                };
                new Thread(r).start();   通过实现Runnable接口来实现匿名内部类


               




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2