黑马程序员技术交流社区

标题: 关于匿名内部类的交流 [打印本页]

作者: chen陈    时间: 2016-9-4 16:49
标题: 关于匿名内部类的交流
最近安卓基础班学习了内部类的知识,对于匿名内部类不甚了解,望大神指导
作者: chen陈    时间: 2016-9-4 16:50
视频说匿名内部类是一个继承了该类或者实现了该接口的子类匿名对象
作者: chen陈    时间: 2016-9-4 16:51
谁能帮忙解释一下 = = 菜鸟在线等
作者: chen陈    时间: 2016-9-4 16:52
还有就是格式知道怎么用,但是对于应用的情景还是不怎么清楚.
作者: 小菜白白白    时间: 2016-9-4 19:26
相当于一个接口或父类的 子类对象,然后可以直接调用子类的方法
作者: wosika    时间: 2016-9-8 19:27
匿名内部类,就是有一个继承或者实现接口的形式。
比如开一条线程首先是new Thread();,然后再后面加上一个大括号,就是有一个继承了Thread的匿名内部类。
new Thread(){};
大括号里可以重写父类的方法
new Thread(){
public void run(){}
};    这样一个匿名内部类就出来了。还有问题我们可以互相交流

作者: 648764479    时间: 2016-9-8 19:41
它本质就是一个对象,编译的时候看左边,运行看右边,用它调方法就是调用的它重写的方法
interface Play{                  //这是一个接口
        void playGame(); //里面是一个抽象方法.注意:此时该抽象方法的默认修饰符为public abstrat
}

class Demo1{                        //定义一个类
        public static void main(String[] args){        //主方法,程序的入口
                 Demo1.method().playGame();                        //通过类名调用方法
        }

        public static Play method(){                        //这是一个静态方法
                return new Play(){                                        //返回一个对象
                        public void plagGame(){
                                System.out.println("PlayGame");
                        }
                };
        }
}

就像以上Demo,Demo1.method().playGame();这句可以看成
Play p = Demo1.method();//多态
p.playGame();//编译看左边,运行看右边,实际运行的是改匿名内部类重写的方法




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