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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 进击的蜗牛 中级黑马   /  2015-7-2 23:20  /  260 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class AbsDemo
{
        abstract void show();
}

class Outer
{
        int x = 3;
                public void function()
        {
                AbsDemo d = new AbsDemo()  //匿名内部类
                {
                        int num = 9;
                        void show()
                        {
                                System.out.println("num="+num);
                        }

                        void abc()
                        {
                                System.out.println("haha");
                        }
                };
                d.show();
                //d.abc();//编译失败,因为多态。
        }
}



怎么调用匿名内部类中的abc方法?必须继承类或者实现接口有才能实现吗?不应该的?求详细解释


评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

3 个回复

倒序浏览
匿名调用 就是new xxx() {} .methodName(); 因为类没有名字 我想是 这样的
回复 使用道具 举报
这样搞是不行的 建议如果你要调用abc方法 就不要用匿名内部类 老老实实使用普通内部类 继承 新建对象 调用来做 使用匿名内部类 就是为了简化书写 你这样搞 就让匿名内部类的使用失去了意义
回复 使用道具 举报
感觉你的程序的编译就存在错误。首先,匿名内部类的实现要有前提:要实现一个接口或者继承一个类。首先AbsDemo d = new AbsDemo()  ,抽象类是不能直接用new实例化的。而且就算是你的编译通过了,d是AbsDemo类的对象,而AbsDemo类中没有show()方法,自然调用失败。建议重新定义一个类让他继承AbsDemo类,应该就能解决了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马