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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mls123456 中级黑马   /  2015-7-4 19:00  /  502 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

请大神简单介绍一下匿名内部类

评分

参与人数 1黑马币 +2 收起 理由
AJHJKSHDKJD1 + 2 淡定

查看全部评分

10 个回复

倒序浏览
没有名字的,定义在类内部,或者方法内部的类
回复 使用道具 举报
interface IA
{
        void fun();
}
class A
{
        public IA show(){
                //定义了一个有名字的内部类;
        /*        class B implements IA
                {
                        public void fun(){
                                System.out.println("B-->fun()");
                        }
                }
                IA a = new B();
                return a;
        */
                //************使用匿名的内部类***************//
                //既然内部类的名字,对外部来说没有什么用,可以使用匿名的
                IA a = new IA(){//IA a = new B();//定义一个IA的子类,并且实例化了
                        //内部,必须实现IA接口中的抽象方法
                        public void fun(){
                                System.out.println("B-->fun()");
                        }
                };
                return a;
       
                //写法的格式:new 接口/抽象类(){//重写方法};
        /*        return new IA(){
                        //内部,必须实现IA接口中的抽象方法
                        public void fun(){
                                System.out.println("B-->fun()");
                        }
                };
                */
        }
}
class Demo
{
        public static void main(String[] args)
        {
                A a = new A();
                IA obj = a.show();
                obj.fun();//调用匿名内部类的方法;
        }
}
回复 使用道具 举报 1 0
keto 发表于 2015-7-4 20:55
interface IA
{
        void fun();

学习了……还是要好好地理解吧
回复 使用道具 举报
个人理解,不知道能不能帮到你。假如不用匿名内部类的话,我们想用,就得在上面new一个出来;有了匿名内部类,我们就不用写new的那一步了,直接在括号内写要new的就行了。不知道我理解的对不对
回复 使用道具 举报
keto 发表于 2015-7-4 20:55
interface IA
{
        void fun();

谢谢,,,,,,,,,,,,,,,,,,,,,
回复 使用道具 举报
我也不太明白啊
回复 使用道具 举报
就是能调接口
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
感觉匿名内部类看的人晕晕的 得花时间好好理解下,我也顺便看看有没有大神分享下大神们都是怎么理解的
回复 使用道具 举报
没有名字的内部类 需要先定义个接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马