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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

匿名内部类的概述
/*
匿名内部类,就是内部类的简写格式。
属于局部内部类。
必须有前提,内部类必须继承或者实现一个外部类或者接口。
匿名内部类,其实就一个匿名子类对象。
格式 new父类or接口(){子类内容};
通常的使用场景之一,当函数参数是接口类型时,而且接口中的方法不超过三个。内部类效率更高;增强阅读性,即多态的使用。

可以用匿名内部类作为实际参数进行传递。
匿名内部类方法使用方式:充分理解匿名内部类为一个实例对象的含义。即多态的表现,当方法过多时,可选择赋值给一个父类引用,之后使用父类引用进行方法调用。

*/
class Outer
{       
        void method(){
                Object obj=new Object(){
                        public void show(){
                                System.out.println("show run");
                        }
                }
                obj.show();
                //因为匿名累不累这个子类对象被向上转型为了object类型。这样就不能再用子类的特有方法了。
        }//内部类可以存放在局部位置上,内部类在局部位置上,只能访问局部中被final修饰的局部变量。因为在局部位置中,不被final修饰的变量有可能运行完就是放了,而内部类还没有被创建。
}
class Demo implements Speak
{
        public static void main(String[] args){
        //学习匿名内部类之前的做法
        Speak s=new Person();//创建一个实例
        speak.say();
        //匿名类
        new Person().say();
        //使用匿名内部类
        Speak s1=new Speak(){
                public void say(){
                        System.out.println("匿名内部类");
                }
        };
        s1.say();
        //简化为
        new Speak(){
                public void say(){
                        System.out.println("匿名内部类");
                }
        }.say();
        }

2 个回复

正序浏览
看完还是有些模糊
可能还是需要多多实践中体会
回复 使用道具 举报
温习温习。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马