黑马程序员技术交流社区
标题:
关于编程思维的一个问题
[打印本页]
作者:
和谐木马
时间:
2015-3-18 23:39
标题:
关于编程思维的一个问题
本帖最后由 和谐木马 于 2015-3-19 23:21 编辑
/*
思路:定义一个抽象类用来装一个获取当前时间的点的方法,并抽象一个执行代码的方法,用
来获取代码执行时间
*/
abstract class GetTime
{
private long startTime;
private long endTime;
GetTime() //直接用构造方法实现了获取时间的功能
{
startTime=System.currentTimeMillis();
codes();
endTime=System.currentTimeMillis();
System.out.println("耗时:"+(endTime-startTime)+"毫秒");
}
public abstract void codes();
}
class RunningTime extends GetTime
{
public void codes()
{
for (int i=0; i<3000; i++)
{
System.out.print(i+",");
}
}
}
class GetTimeDemo
{
public static void main(String[] args)
{
new RunningTime();
}
}
复制代码
这个代码是毕老师视频里讲抽象类那里的模板方法模式那节,我按照自己的想法写的。视频里毕老师是将获取时间封装在一个GetTime类的成员方法那,并且用final修饰保证不被重写。我的想法是这个方法既然只有一个功能,我就直接把它写在构造方法里,这样貌似也不会被重写?偶是新手,求指导!或者这样的编程想法想错误?还有这代码还有什么大问题么?求大神指导!根据大神们的发言,确实这样很不好。考虑很不周全啊!
作者:
浓眉小眼
时间:
2015-3-18 23:47
看不懂好高级的样子
作者:
和谐木马
时间:
2015-3-19 00:15
浓眉小眼 发表于 2015-3-18 23:47
看不懂好高级的样子
求大神助攻!:lol,代码本身简单,我问的大部是这个想法的问题!
作者:
jie96169
时间:
2015-3-19 00:23
那你这样是不是每次用这个方法都要new一个对象,这样不会觉得浪费内存空间么?
作者:
Peng苏
时间:
2015-3-19 00:37
我也不懂。。。。。
作者:
艺多不压身丶
时间:
2015-3-19 08:08
你应该多看看子父类的初始化状态。
作者:
理当如此
时间:
2015-3-19 12:51
区别就是你把它放在构造函数中,只要new GetTime(),获取时间的功能就运行了。如果把获取时间的功能放在一般函数gettime()中,你需要new GetTime().gettime()获取时间的功能才能运行。
对象一建立就会调用与之对应的构造函数。你定义获取时间的功能应该是你调用时它才运行,而不是对象一建立它就运行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2