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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© date1130 高级黑马   /  2014-10-9 07:44  /  1201 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

interface Inter

       void method();

class Test

      //创建匿名类,补足代码.


public static void main(String[] args)
{
      Test.function().method();
}

在毕老师的视频当中讲到匿名类的时候,给留的一道练习,Test.function().method();

这句话能带来什么呢?Test.function().的运算结果是代表着一个静态的方法Function被Test以类名.静态方法的方式调用。那么毕老师说Test.function().的运算结果还可以调用method抽象方法,那么运算结果肯定是一个对象而且还是Inter类型的对象,只有Inter类型的对象才可以调用method方法。那么static XXXX function{}返回值的类型必然是Inter类型。这个调用method方法,我有点迷糊,是因为我前面哪一点没有学好呢?

点评

第一次接触时候我也很多都不明白。可以尝试稍向后学,反过来复习时相信会有很大提高!  发表于 2014-10-9 09:58

评分

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

查看全部评分

3 个回复

倒序浏览
Test.function().method();这句话包含了两种方法的调用
1.静态方法:使用static关键字限定,调用方式:类名.方法名,Test.function()就表明了function()方法是一个静态方法
2.非静态方法:没有static关键字,是一个对象方法,需要new一个对象来调用,而method()就是一个非静态方法,那么必须要有一个实现了Inter接口的对象来调用
所以function()方法必须返回一个实现立刻Inter接口的对象
  1. static Inter function{
  2.     return new MyInter();
复制代码

点评

太感谢了,恍然大悟。。。嘿嘿。  发表于 2014-10-9 10:16

评分

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

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马