黑马程序员技术交流社区

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

作者: lucy198921    时间: 2013-3-29 21:14
标题: 匿名内部类 的问题
本帖最后由 lucy198921 于 2013-3-30 21:23 编辑

运行正常,但是就是没有运行出结果.

interface Inter
        {
        public abstract void  show();
        public abstract void show1();
        }

class Outer
{
        public void method()
        {
                Inter i= new Inter()
                {
                        public void show()
                        {
                        System.out.println("inner...show");
                        }
                        public void show1()
                        {
                        System.out.println("inner...show1");
                        }
                };
        i.show();
        i.show1();
        }
}

class Demo
{
        public void abc()
        {
        System.out.println("demo....abc");
        }
}


class  AnonymousDemo4
{
        public static void main(String[] args)
        {
                Object obj=new Object()
                {
                public void  abc()
                        {
                        System.out.println("zilei.....abc");
                        }
                };
        }
}


作者: 胡志超    时间: 2013-3-29 21:18
本帖最后由 胡志超 于 2013-3-29 21:19 编辑

public static void main(String[] args)
        {
                Object obj=new Object()
                {
                public void  abc()
                        {
                        System.out.println("zilei.....abc");
                        }
                };
        }
你这里又没有调用方法,当然没结果了,
在main方法中加这句 obj.abc();就有结果了
作者: 魏福伟    时间: 2013-3-29 21:21
你只是定义了,并没有调用啊
作者: 我手心里的宝    时间: 2013-3-29 21:23
楼上说的对,你主函数没有调用法,因而不会有结果
你可以这样调用方法
newOuter().i.show()
你这个就是不是内部类了,你是在内部创建了一个实现Inner的对象,通过匿名内部类的方法
作者: 黑马-郑玉元    时间: 2013-3-29 21:26
你的主方法里都没有调用什么方法,怎么会有运行结果呢!
你只是创建了一个对象,里面声明了一个方法,但并没有调用里面的方法!显然是不会运行的呀!
作者: 黑马-郑玉元    时间: 2013-3-29 21:29
胡志超 发表于 2013-3-29 21:18
public static void main(String[] args)
        {
                Object obj=new Object()

你加的这句我想应该会出错!
作者: 胡志超    时间: 2013-3-29 21:30
黑马-郑玉元 发表于 2013-3-29 21:29
你加的这句我想应该会出错!

哦...那你说说看,
作者: 胡志超    时间: 2013-3-29 21:32
黑马-郑玉元 发表于 2013-3-29 21:29
你加的这句我想应该会出错!

你没看清楼主的问题么?我只是回答为什么没输出!你纠结这干嘛
作者: 黑马-郑玉元    时间: 2013-3-29 21:37
胡志超 发表于 2013-3-29 21:30
哦...那你说说看,

里面的方法是子类特有的方法,他new的是父类,不能调用子类特有的方法,他实际上还没有重写父类的方法!
作者: 胡志超    时间: 2013-3-29 21:41
黑马-郑玉元 发表于 2013-3-29 21:37
里面的方法是子类特有的方法,他new的是父类,不能调用子类特有的方法,他实际上还没有重写父类的方法! ...

但是他的main方法中根本没有创建上面的内部外部类,只有一个Object类
作者: 黑马-郑玉元    时间: 2013-3-29 21:43
胡志超 发表于 2013-3-29 21:41
但是他的main方法中根本没有创建上面的内部外部类,只有一个Object类

他用的是匿名内部类,只是他写的不成功,没有重写Object类的方法!
作者: 胡志超    时间: 2013-3-29 21:47
本帖最后由 胡志超 于 2013-3-29 21:49 编辑
黑马-郑玉元 发表于 2013-3-29 21:43
他用的是匿名内部类,只是他写的不成功,没有重写Object类的方法!

我知道他写的不成功,好了,你把他的代码重写一份吧!帮他改下,等会他也在那纠结了
作者: 黑马-郑玉元    时间: 2013-3-29 21:54
胡志超 发表于 2013-3-29 21:47
我知道他写的不成功,好了,你把他的代码重写一份吧!帮他改下,等会他也在那纠结了 ...

他应该明白了!我相信他的悟力!


作者: 胡志超    时间: 2013-3-29 22:00
黑马-郑玉元 发表于 2013-3-29 21:54
他应该明白了!我相信他的悟力!

{:soso_e101:}{:soso_e101:}{:soso_e101:}

作者: 陈丽莉    时间: 2013-3-30 13:55
记得及时处理帖子哦~  继续追问,或改成【已解决】~




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