匿名内部类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了匿名内部类相关的知识,希望对你有一定的参考价值。

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

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

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

//继承:

    简单使用:
    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();
        }
    }

 

以上是关于匿名内部类的主要内容,如果未能解决你的问题,请参考以下文章

50java 匿名内部类剖析

代码片--练习匿名内部类

匿名内部类创建线程,简化线程创建代码

关于接口配合匿名内部类使用的问题讲究

java内部类之成员内部类之匿名内部类

匿名内部类