黑马程序员技术交流社区

标题: 新手求助 [打印本页]

作者: 还在路上    时间: 2014-12-18 21:43
标题: 新手求助
本帖最后由 还在路上 于 2014-12-23 23:59 编辑

要求是补齐代码输出HelloWord。

本菜鸟之后通过答案学习了一下,但是关于内部类返回对象那一块理解上还是有点迷糊。
有没有大神,给讲解一下。
谢过!

interface Inter {
        void show();
}

class Outer {
        //补齐代码
        
}

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


作者: lwj123    时间: 2014-12-18 21:49
Outer.method().show();   一:Outer.method():  1、返回的是Inter对象  2、method是一个静态方法  二:.show()  1、必须是对象调用,所以必定是Inter子类对象调用  2、在此需要写一个匿名内部类new Inner(){void show() {System.out.println("Hello World");}}
作者: 还在路上    时间: 2014-12-19 18:00
lwj123 发表于 2014-12-18 21:49
Outer.method().show();   一:Outer.method():  1、返回的是Inter对象  2、method是一个静态方法  二:. ...

匿名内部类不是要 返回一个对象吗
作者: duluhua    时间: 2014-12-19 18:29
你看看这么写如何:
public interface ITest {//定义接口
    void method();//接口方法
}

public class Test2 {

    public static void main(String[] args) {
        //new接口
        new ITest() {
            //紧跟着实现接口的方法
            @Override
            public void method() {
                System.out.println("ddddddddd");
            }
        }.method();//用new的对象再调用匿名对象所实现的方法
    }
}

其实在 多线程这里也使用匿名内部类了
new Thread(new Runnable(){
@Override
public void run(){
   System.out.println("ddd")
}
}).start();

至少我是这么理解的,匿名,也就是没有名称,也就是new的对象是没有名称的,new对象后跟{},{}里面是方法的具体实现,然后用new的对象再紧跟着调用所实现的方法。应该就是这么个流程吧。
你认为这么理解如何。。
作者: duluhua    时间: 2014-12-19 18:31
补充点:我认为,匿名内部类本身就是一个对象,不是要 返回一个对象。只是这个对象有些特殊,该对象没有名字。
作者: lwj123    时间: 2014-12-19 18:55
还在路上 发表于 2014-12-19 18:00
匿名内部类不是要 返回一个对象吗

new Inter(){复写接口的方法}   这个就是一个对象了
作者: 还在路上    时间: 2014-12-21 00:03
duluhua 发表于 2014-12-19 18:29
你看看这么写如何:
public interface ITest {//定义接口
    void method();//接口方法


你这个做法让我感觉更理解,感觉不是在做我这个补齐代码!新手莫怪
我就是想学习学习,谢谢你的回复和支持!





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