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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-6-16 20:39  /  1588 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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







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

7 个回复

倒序浏览
防止GetTime方法被复写,用private修饰。
回复 使用道具 举报
你个GetTime是构造函数啊,构造函数是不能用final修饰的
回复 使用道具 举报
嗯,但是用final为什么会报错?
回复 使用道具 举报
嗯,但是用final为什么会报错?
回复 使用道具 举报
Noword 发表于 2012-6-16 20:54
嗯,但是用final为什么会报错?

这是java语法规定啊 ,final修饰方法的作用是防止这个方法被子类继承所复写,因为final就是最终形态的。而构造函数是不会被子类继承的,所以不需要final修饰!
回复 使用道具 举报
刘笑 中级黑马 2012-6-16 21:03:41
7#
GetTime是构造函数,构造方法没有返回类型,也不能定义为void或者final,在方法名前面不声明方法类型。楼主可以用private修饰即可达到想要的效果
回复 使用道具 举报
GetTime()是构造函数,是不能用final 关键字修饰的。
你要防止GetTime()被复写,但是你要知道这是构造函数,有复写的可能吗!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马