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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海东 中级黑马   /  2013-4-3 10:33  /  2069 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘海东 于 2013-4-3 11:26 编辑

视频上老师讲的好快,没有完全理解。
有没有哪位帮我解释一下这个练习的分析过程。
  1. //匿名内部类练习

  2. interface Inter
  3. {
  4.         void method();
  5. }
  6. class Test
  7. {
  8.                 //补足代码通过匿名内部类
  9. }
  10. class InnerTest
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Test.function().method();//主要是这句话不懂啊???
  15.         }
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

8 个回复

倒序浏览
Test.function().method();要从这句开始分析,直接Test类名大头,首先要想到static修饰。所以Testl类里面的function()就该是静态static修饰。
1.
public static void function(){
           
}
2.再分析一下,Test.function().注意这里,这里是内部类调用function方法。所以要有一个内部类返回,
得出
public static Inner function(){
           return 内部类;
}
3.然后可以写内部类了
    return new Inner(){
        public void method(){
        System.out.println("我是内部类方法");
        }
};
  1. interface Inner
  2. {
  3.         void method();
  4. }
  5. class Test
  6. {
  7.         public static Inner function(){
  8.                 return new Inner(){
  9.                         public void method(){
  10.                                 System.out.println("我是内部类方法");
  11.                         }
  12.                 };
  13.         }
  14. }
  15. class InnerText
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 Test.function().method();
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
Test.function().method();//主要是这句话不懂啊???

第一步:Test是类名,function()是方法,当“类名.方法”时,这个方法是静态方法。所以Test类中有一个静态的方法function。

第二步:.method():function这个方法运算后的结果是一个对象。而且是一个Inter类型的对象。只有是Inter类型的对象,才可以调用method方法。

代码如下
Inter in = Test.function();
in.method();

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
不知道对不对自己随便写了一个,{:soso_e143:}
  1. /匿名内部类练习

  2. public class InnerTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Test.function().method();//主要是这句话不懂啊???
  7.         }
  8. }
  9. interface Inner
  10. {
  11.         void method();
  12. }
  13. class Test
  14. {
  15.         //补足代码通过匿名内部类
  16.         public static Inner function(){
  17.         return new Inner(){
  18.                 public void method(){
  19.                         System.out.println("你好");
  20.                         }
  21.                 };       
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
{:soso_e103:}和楼上一样,看来是对的{:soso_e128:}
回复 使用道具 举报
你们技术分怎么拿的,我才那么点{:soso_e109:}求攻略
回复 使用道具 举报
夏振博 发表于 2013-4-3 10:59
不知道对不对自己随便写了一个,

  靠, 都这把年纪了, 你还来混技术分??;P
回复 使用道具 举报
张权 发表于 2013-4-3 12:12
靠, 都这把年纪了, 你还来混技术分??

呵呵,你这不是也来了嘛:lol
回复 使用道具 举报
夏振博 发表于 2013-4-3 21:23
呵呵,你这不是也来了嘛

我这不是菜鸟嘛, 很多不懂的东西, 没事来论坛逛逛而已!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马