黑马程序员技术交流社区

标题: 菜鸟请教:大家给我看一下这是什么用法? [打印本页]

作者: 黄晓天    时间: 2011-10-25 10:52
标题: 菜鸟请教:大家给我看一下这是什么用法?
package com.xiaotian.heima;

/**
* 编写程序求的1-100之间的数字和
* @author xiaotian
*
*/
public class TestSum {
     /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
       /*
        int sum=0;
        
        for(int i=1;i<=100;i++){
                sum+=i;
               
        }

           System.out.println("1+2+3+4+......100="+sum);
       */
           TestSum ts=new TestSum(){
                   public int getSum(){
                          
                           int sum=0;
                          
                           for(int i=1;i<=100;i++){
                                  
                                   sum+=i;
                           }
                          
                           return sum;
                   }
           };

           System.out.println("sum="+sum);
        }

}
问题:TestSum ts=new TestSum( ){ };这是什么用法,要详细点的,谢谢了!


该贴已经同步到 黄晓天的微博
作者: 姚志华    时间: 2011-10-25 11:09
你这写的有问题呀,应该是这样吧
public class TestSum {

        /**
         * @param args
         */
        public static void main(String[] args) {
       
               
        int sum=new TestSum().getSum();
            
   System.out.println("和为:"+sum);
  }


        public int getSum(){
            
            int sum=0;
            
            for(int i=1;i<=100;i++){
                   
                    sum+=i;
            }
            
            return sum;
        }

        }
你定义的那个局部变量SUM怎么输出的,不会报错吗

作者: 杨杰    时间: 2011-10-25 12:01
2楼的我见过,楼主的,我还真么见过。
方法应该是分离的,等着被调用。如果直接在变量后面写,我感觉那就不是面向对象思想了,那样的话还不如你注释掉得那部分呢
作者: 宁超    时间: 2011-10-25 12:04
你的代码有问题的。我猜你问的应该是匿名内部类吧。
http://blog.csdn.net/ilosing/article/details/6850384我的笔记有写。你可以去看下。
作者: 黄晓天    时间: 2011-10-25 12:52
嗯,谢谢了,发问题发错了,不过这不是我的初衷,我想问一下TestSum ts=new TestSum( ){ };这是什么用法,要详细点的,请举例说明,谢谢了!
作者: 黄晓天    时间: 2011-10-25 13:52
{}里面写匿名内部类的重写方法吗?
作者: 姚志华    时间: 2011-10-25 14:50
黄晓天 发表于 2011-10-25 13:52
{}里面写匿名内部类的重写方法吗?

对,理解正确,之所以写成这样是因为你要用这个内部类不止一次,而且返回的还是个TestSum所以把它赋给了TS,如果只用一次就直接这样写就可以
new TestSum( ){
//复写的方法
};




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