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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 还在路上 中级黑马   /  2014-12-18 21:43  /  1865 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 还在路上 于 2014-12-23 23:59 编辑

要求是补齐代码输出HelloWord。

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

interface Inter {
        void show();
}

class Outer {
        //补齐代码
        
}

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

评分

参与人数 1技术分 +2 收起 理由
杨佳名 + 2

查看全部评分

8 个回复

倒序浏览
Outer.method().show();   一:Outer.method():  1、返回的是Inter对象  2、method是一个静态方法  二:.show()  1、必须是对象调用,所以必定是Inter子类对象调用  2、在此需要写一个匿名内部类new Inner(){void show() {System.out.println("Hello World");}}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
lwj123 发表于 2014-12-18 21:49
Outer.method().show();   一:Outer.method():  1、返回的是Inter对象  2、method是一个静态方法  二:. ...

匿名内部类不是要 返回一个对象吗
回复 使用道具 举报
你看看这么写如何:
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的对象再紧跟着调用所实现的方法。应该就是这么个流程吧。
你认为这么理解如何。。

点评

谢谢你的回复,你这样写的代码感觉不那么好理解...感觉跟主题不一样  发表于 2014-12-21 00:09

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
补充点:我认为,匿名内部类本身就是一个对象,不是要 返回一个对象。只是这个对象有些特殊,该对象没有名字。

点评

我仔细研究了一下 其实你的解释很好,也很明白。 我就是感觉在method()方法里是不是要返回Inter对象  发表于 2014-12-21 00:08
回复 使用道具 举报
还在路上 发表于 2014-12-19 18:00
匿名内部类不是要 返回一个对象吗

new Inter(){复写接口的方法}   这个就是一个对象了
回复 使用道具 举报
duluhua 发表于 2014-12-19 18:29
你看看这么写如何:
public interface ITest {//定义接口
    void method();//接口方法


你这个做法让我感觉更理解,感觉不是在做我这个补齐代码!新手莫怪
我就是想学习学习,谢谢你的回复和支持!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马