匿名内部类

匿名内部类:没有类名的类就称作为匿名内部类

匿名内部类的好处:简化书写。

匿名内部类的使用前提:必须存在继承或者实现关系才能使用。

//继承:

    简单使用:
    abstract class Animal{
        public abstract void run();
    }
    //匿名内部类:匿名内部类只是没有类名,其他的一概成员都是具备的。

    //匿名内部类与Anumal是继承的关系。目前创建Anmail子类对象
        new Animal(){
            //匿名内部的成员
            public void run(){
                System.out.println("狗在跑!!");
            }
            //特有的方法
            public void bite(){
                System.out.println("狗在咬人");
            }
        }.run();

    多态配合使用:
    class Animal {
        public abstract void run();
        
        public abstract void sleep();
    }

        Animal a = new Animal(){
            public void run(){
                System.out.println("猫在跑!");
            }
            
            public void sleep(){
                System.out.println("猫在睡觉!");
            }
            
            //特有的方法 就不要用匿名内部类了
            
        };
        
        a.run();
        
        a.sleep();

//实现

    interface Dao{
        public void run();
    }

    class Outer{
        public void print(){
            new Dao(){//创建接口实现类的匿名内部类
                public void run(){
                    System.out.println("执行成功");
                }
            }.run();
        }
    }

    class Demo{
        public static void main (String[] args){
            Outer out = new Outer();
            out.print();
        }
    }


    匿名内部类一般用于实参。
    interface Dao{
        public void run();
    }

    class Demo2{
        public static void main(String[] args){
            test(new Dao{
                public void run(){
                    System.out.println("测试跑步成功");
                }
            });
        }
        
        public static void test(Dao d){
            d.run();
        }
    }

 

posted @ 2016-09-23 10:56  FromNowOns  阅读(136)  评论(0编辑  收藏  举报