黑马程序员技术交流社区

标题: 关键字final [打印本页]

作者: 黑马连家华    时间: 2012-6-16 20:39
标题: 关键字final
本帖最后由 Noword 于 2012-6-26 15:15 编辑

/*
获得一段程序运行的时间
*/
abstract class GetTime
{
final GetTime() //如何防止GetTime方法被复写?
{
  long start = System.currentTimeMillis();
  runCode();
  long end = System.currentTimeMillis();
  System.out.println("Time="+(end - start));
}
public abstract void runCode()
}
class SubGetTime extends GetTime
{
public void runCode()
{
  for (int x = 1;x < 2000;x++)
  {
   System.out.print(x);
  }
}
}
class TemplateDemo
{
public static void main(String[] args)
{
  new SubGetTime();
}
}

//编译时错误提示error: modifier final not allowed here







谢谢大家..........................我看大家很无耐
其实我也想自杀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


作者: 张_涛    时间: 2012-6-16 20:48
防止GetTime方法被复写,用private修饰。
作者: 李盼    时间: 2012-6-16 20:53
你个GetTime是构造函数啊,构造函数是不能用final修饰的
作者: 黑马连家华    时间: 2012-6-16 20:54
嗯,但是用final为什么会报错?
作者: 黑马连家华    时间: 2012-6-16 20:54
嗯,但是用final为什么会报错?
作者: 李盼    时间: 2012-6-16 21:03
Noword 发表于 2012-6-16 20:54
嗯,但是用final为什么会报错?

这是java语法规定啊 ,final修饰方法的作用是防止这个方法被子类继承所复写,因为final就是最终形态的。而构造函数是不会被子类继承的,所以不需要final修饰!
作者: 刘笑    时间: 2012-6-16 21:03
GetTime是构造函数,构造方法没有返回类型,也不能定义为void或者final,在方法名前面不声明方法类型。楼主可以用private修饰即可达到想要的效果
作者: 揭耀祖    时间: 2012-6-16 21:08
GetTime()是构造函数,是不能用final 关键字修饰的。
你要防止GetTime()被复写,但是你要知道这是构造函数,有复写的可能吗!




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