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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 浩南酷酷 中级黑马   /  2014-2-14 18:10  /  1327 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public abstract class GetTime {
        public final void getTime(){
                long start = System.currentTimeMillis();
                runMethod();
                long end = System.currentTimeMillis();
                System.out.println("时间: "+(end-start));
        }
        public abstract void runMethod();
}
public class SubTime extends GetTime{
        public void runMethod(){
                int count=0;
                for (int i = 0; i < 4000; i++) {
                System.out.print(i);
                }
        }                       
}

public class Run {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                SubTime s = new SubTime();
                s.getTime();
        }
}

这个运行怎么没有结果呢?求告知啊~

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
因为你父类中定义的getTime()方法是被final修饰的,被final修饰的方法是不能被子类重写的,显然当你创建子类对象调用getTime()方法是有问题的。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
被public修饰的公有类必须在自己的类名.java的文件中命名,把GetTime和SubTime两个类的公有修饰符public去掉就可以了,被final修饰的方法不能被重写,但是可以被继承,调用父类被final修饰的方法是不会有问题的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
一个类中只能有一个被public修饰的类
回复 使用道具 举报
感谢,我懂啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马