黑马程序员技术交流社区

标题: 新手求细心的人指导,帮忙看看这段程序,很简单,但是我就不知道错哪了 [打印本页]

作者: i19920412    时间: 2014-10-14 23:25
标题: 新手求细心的人指导,帮忙看看这段程序,很简单,但是我就不知道错哪了
abstract class GetTime
{
        public final void getTime1()
        {
                long star = System.currentTimeMillis();

                chengxu();

                long end  = System.currentTimeMillis();

               
                System.out.println("毫秒:" +(end - star));
        }

        public abstract void chengxu();       
}
class Program extends GetTime
{
        public void chengxu()
        {
                for (int x=0;x<1000 ;x++ )
                {
                        System.out.print("x");
                }
        }
}                                               


class  Dome1
{
        public static void main(String[] args)
        {
                Program gt = new Program();
                gt.chengxu();
        }
}

作者: i19920412    时间: 2014-10-14 23:28
这段代码是计算某一个程序运行时间的代码,程序能运行,但是运行结果不会打印出程序运行的结果,我就郁闷了,新手就是难
作者: 香草芭芙    时间: 2014-10-15 05:06
  1. abstract class GetTime
  2. {
  3.         public final void getTime1()
  4.         {
  5.                 long star = System.currentTimeMillis();
  6.                 chengxu();
  7.                 long end = System.currentTimeMillis();
  8.                 System.out.println("毫秒:" + (end - star));
  9.         }
  10.         public abstract void chengxu();
  11. }
  12. class Program extends GetTime
  13. {
  14.         public void chengxu()
  15.         {
  16.                 for (int x = 0; x < 1000; x++)
  17.                 {
  18.                         System.out.print("x");
  19.                 }
  20.         }
  21. }
  22. class Game6
  23. {
  24.         public static void main(String[] args)
  25.         {
  26.                 Program gt = new Program();
  27.                 //gt.chengxu(); //方法调用错误. 这只是打印方法.
  28.                 gt.getTime1(); //要时间得调用这个方法, 这是你自己写的.
  29.         }
  30. }
复制代码

作者: HM2014nuli    时间: 2014-10-15 07:42
楼上正解
作者: qq8921310    时间: 2014-10-15 07:57
我觉得二楼的也有问题啊。
1、你方法既然是final的,子类继承不到。
2、你在getime里调用promgram、就算运行也要运行gettime。
个人意见。
作者: Nullifier    时间: 2014-10-15 08:43
抽象类就不要定义final方法了
作者: i19920412    时间: 2014-10-15 09:07
qq8921310 发表于 2014-10-15 07:57
我觉得二楼的也有问题啊。
1、你方法既然是final的,子类继承不到。
2、你在getime里调用promgram、就算运 ...

用final就是不需要子类继承这个方法,因为这个方法的功能是计算某一个程序的运行时间,子类需要继承覆盖的是我们所输入想要计算运行时间的程序
作者: i19920412    时间: 2014-10-15 09:08
Nullifier 发表于 2014-10-15 08:43
抽象类就不要定义final方法了

用final就是不需要子类继承这个方法,因为这个方法的功能是计算某一个程序的运行时间,如果被继承修改了这个方法,这段代码就没有意义了。子类需要继承覆盖的是我们所输入想要计算运行时间的程序
作者: i19920412    时间: 2014-10-15 09:11
香草芭芙 发表于 2014-10-15 05:06

嗯嗯,正解,感谢,我还要多加练习,我还不熟练,实际上是很简单的错误,
作者: Nullifier    时间: 2014-10-15 09:19
i19920412 发表于 2014-10-15 09:08
用final就是不需要子类继承这个方法,因为这个方法的功能是计算某一个程序的运行时间,如果被继承修改了 ...

额 final修饰的方法能被继承 但是不能重写
作者: i19920412    时间: 2014-10-15 09:21
Nullifier 发表于 2014-10-15 09:19
额 final修饰的方法能被继承 但是不能重写

我所说的不需要子类继承就是重写的意思····:L 本人不专业,不好意思哈。
作者: Nullifier    时间: 2014-10-15 09:45
i19920412 发表于 2014-10-15 09:21
我所说的不需要子类继承就是重写的意思···· 本人不专业,不好意思哈。 ...

哦哦,没事我也是百度的,刚开始我也以为final修饰的方法不能继承了,又掌握了个知识
作者: 迷茫小王    时间: 2014-10-15 11:09
兄弟,你在main函数里面调用gt.chengxu只是调用了循环,没调用getTime方法啊,最后gt.chengxu()改成gt.getTime1()就ok了
作者: 迷茫小王    时间: 2014-10-15 11:10
qq8921310 发表于 2014-10-15 07:57
我觉得二楼的也有问题啊。
1、你方法既然是final的,子类继承不到。
2、你在getime里调用promgram、就算运 ...

方法是final子类是可以继承到的,只不过不能重写。
嗯,应该是这样的。
作者: mmppp    时间: 2014-11-26 17:11
朋友 ,你在主函数里面调用的是那个类里面的 chengxu()  方法额。 不会得到你想要的结果的啊。你并没有调用getTime()方法啊
作者: zhou1234    时间: 2014-11-27 17:36
这个程序虽然加final,但没有用到重写吧




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