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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 和谐木马 中级黑马   /  2015-3-18 23:39  /  730 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 和谐木马 于 2015-3-19 23:21 编辑
  1. /*
  2.         思路:定义一个抽象类用来装一个获取当前时间的点的方法,并抽象一个执行代码的方法,用
  3.         来获取代码执行时间
  4. */
  5. abstract class GetTime
  6. {
  7.         private long startTime;
  8.         private long endTime;
  9.         GetTime()                     //直接用构造方法实现了获取时间的功能
  10.         {
  11.                 startTime=System.currentTimeMillis();
  12.                 codes();
  13.                 endTime=System.currentTimeMillis();
  14.                 System.out.println("耗时:"+(endTime-startTime)+"毫秒");
  15.         }
  16.         public abstract void codes();
  17. }

  18. class RunningTime extends GetTime
  19. {
  20.         public  void codes()
  21.         {
  22.                 for (int i=0; i<3000; i++)
  23.                 {
  24.                         System.out.print(i+",");
  25.                 }
  26.         }
  27. }

  28. class GetTimeDemo
  29. {
  30.         public static void main(String[] args)
  31.         {
  32.                 new RunningTime();
  33.         }
  34. }
复制代码
这个代码是毕老师视频里讲抽象类那里的模板方法模式那节,我按照自己的想法写的。视频里毕老师是将获取时间封装在一个GetTime类的成员方法那,并且用final修饰保证不被重写。我的想法是这个方法既然只有一个功能,我就直接把它写在构造方法里,这样貌似也不会被重写?偶是新手,求指导!或者这样的编程想法想错误?还有这代码还有什么大问题么?求大神指导!根据大神们的发言,确实这样很不好。考虑很不周全啊!


6 个回复

倒序浏览
看不懂好高级的样子
回复 使用道具 举报
浓眉小眼 发表于 2015-3-18 23:47
看不懂好高级的样子

求大神助攻!:lol,代码本身简单,我问的大部是这个想法的问题!
回复 使用道具 举报
那你这样是不是每次用这个方法都要new一个对象,这样不会觉得浪费内存空间么?
回复 使用道具 举报
我也不懂。。。。。
回复 使用道具 举报
你应该多看看子父类的初始化状态。
回复 使用道具 举报
区别就是你把它放在构造函数中,只要new GetTime(),获取时间的功能就运行了。如果把获取时间的功能放在一般函数gettime()中,你需要new GetTime().gettime()获取时间的功能才能运行。
对象一建立就会调用与之对应的构造函数。你定义获取时间的功能应该是你调用时它才运行,而不是对象一建立它就运行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马