黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: 进击的蜗牛    时间: 2015-7-2 23:20
标题: 匿名内部类
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方法?必须继承类或者实现接口有才能实现吗?不应该的?求详细解释



作者: 双栖动物    时间: 2015-7-3 00:39
匿名调用 就是new xxx() {} .methodName(); 因为类没有名字 我想是 这样的
作者: 慕容旺财    时间: 2015-7-4 17:24
这样搞是不行的 建议如果你要调用abc方法 就不要用匿名内部类 老老实实使用普通内部类 继承 新建对象 调用来做 使用匿名内部类 就是为了简化书写 你这样搞 就让匿名内部类的使用失去了意义
作者: Love丶cd    时间: 2015-7-6 15:47
感觉你的程序的编译就存在错误。首先,匿名内部类的实现要有前提:要实现一个接口或者继承一个类。首先AbsDemo d = new AbsDemo()  ,抽象类是不能直接用new实例化的。而且就算是你的编译通过了,d是AbsDemo类的对象,而AbsDemo类中没有show()方法,自然调用失败。建议重新定义一个类让他继承AbsDemo类,应该就能解决了!




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