黑马程序员技术交流社区

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

作者: 刘海东    时间: 2013-4-3 10:33
标题: 关于匿名内部类的练习问题
本帖最后由 刘海东 于 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. }
复制代码

作者: С呲號→佔缐    时间: 2013-4-3 10:50
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. }
复制代码

作者: HM张勇    时间: 2013-4-3 10:52
Test.function().method();//主要是这句话不懂啊???

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

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

代码如下
Inter in = Test.function();
in.method();
作者: 夏振博    时间: 2013-4-3 10:59
不知道对不对自己随便写了一个,{: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. }
复制代码

作者: 夏振博    时间: 2013-4-3 11:01
{:soso_e103:}和楼上一样,看来是对的{:soso_e128:}
作者: С呲號→佔缐    时间: 2013-4-3 11:05
你们技术分怎么拿的,我才那么点{:soso_e109:}求攻略
作者: 张权    时间: 2013-4-3 12:12
夏振博 发表于 2013-4-3 10:59
不知道对不对自己随便写了一个,

  靠, 都这把年纪了, 你还来混技术分??;P
作者: 夏振博    时间: 2013-4-3 21:23
张权 发表于 2013-4-3 12:12
靠, 都这把年纪了, 你还来混技术分??

呵呵,你这不是也来了嘛:lol
作者: 张权    时间: 2013-4-4 15:54
夏振博 发表于 2013-4-3 21:23
呵呵,你这不是也来了嘛

我这不是菜鸟嘛, 很多不懂的东西, 没事来论坛逛逛而已!!




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