黑马程序员技术交流社区

标题: 一道简单的面试题,却很有技术含量! [打印本页]

作者: 云端的风    时间: 2015-6-21 08:48
标题: 一道简单的面试题,却很有技术含量!
class Outer
{
    void method()
    {
        Object obj = new Object()
        {
            public void show()
            {
                System.out.println("show run");
            }

        };    //这里为什么有个;号?不加可以吗?为什么?
        obj.show();//这里为什么不能这样调用?为什么?
                  


    }
}

class InnerClassDemo6
{
    public static void main(String[] args)
    {
        new Outer().method();
    }
}

作者: java8023    时间: 2015-6-21 12:11
典型的匿名内部类,不加的话,就会编译错误了,方法内部不能有方法,加上就是匿名内部类,不加就坏了
作者: 十五号的人生    时间: 2015-6-21 12:52
应该是匿名类部类吧
作者: zy18692243338    时间: 2015-6-21 16:04
局部内部类的标准格式,就好像为什么public static void main(String[] args){ }一样,固定格式
作者: zy18692243338    时间: 2015-6-21 16:06
局部内部类的标准格式,就好像为什么public static void main(String[] args){ }一样,固定格式
作者: guiqulaixi    时间: 2015-6-21 18:58
要加分号是因为那是个语句,那是引用指向匿名内部类对象。
obj.show();不能这样调用是因为Object类中没有这个方法,父类引用无法调用子类特有的方法
作者: 安安安    时间: 2015-6-21 20:48
;是匿名内部类的写法。
不能直接调用是因为父类Object中没有show方法。

作者: a1224577182    时间: 2015-6-21 20:54
这是匿名内部类
作者: 为了理想而奋斗    时间: 2015-6-21 21:31
内部匿名类。
作者: 金亮0602    时间: 2015-6-21 21:36
匿名内部类,不加的话,就会编译错误
作者: 繁华落幕    时间: 2015-6-21 21:41
匿名内部类.........
作者: waimian_xiayu    时间: 2015-6-21 21:57
就是个匿名内部类
分号那是一句话,创建对象吧
show()方法在Object中没有啊,所以不能调用
作者: 朱智琳    时间: 2015-6-21 22:02
类名 对象名 = new 类名();   不加分号能行吗?
作者: heisanheisan123    时间: 2015-6-21 22:14
就是个匿名内部类
作者: 闪电无忧    时间: 2015-6-21 22:23
典型的匿名内部类
作者: Foundmoon    时间: 2015-6-21 22:24
匿名内部类把,每台看懂
作者: iFmmer    时间: 2015-6-21 22:28
匿名内部类当然得有个分号
作者: 林RM    时间: 2015-6-21 22:29
匿名内部类,Object obj=Object的子类对象是多态的形式,show方法是子类中的方法,父类没有定义,所以编译失败
作者: 小骆驼    时间: 2015-6-21 23:08
匿名内部类 哦哦哦
作者: 银哥    时间: 2015-6-22 20:44
匿名内部类
作者: 我要当大牛    时间: 2015-6-22 21:31
内部匿名类
作者: 冷雨敲窗被未温    时间: 2015-6-22 21:55
不错  不明觉厉!
作者: lwen    时间: 2015-6-22 23:33
应该是匿名内部类吧
作者: 1千克=1024克    时间: 2015-6-22 23:56
匿名内部类  父类引用不能访问子类方法




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