接口、抽象类都要单建(好习惯)
今天,二轮复习到接口和抽象类。就随随便便 建立一个特别简单的抽象类,没先到,万万没想到遇到了麻烦。
下面是我的反面教材,就这个憋了我一上午。各种查资料,搜帖子,还重新设置path、classpath....艰难险阻,最后终于发现了错误之处。
代码实例:
1 public abstract class P2 { 2 public abstract void gongfu(); 3 } 4 5 class SuperP2 extends P2 { 6 7 public void gongfu() { 8 System.out.println("haha"); 9 } 10 } 11 class Test { 12 public static void main(String[] args) { 13 P2 p = new SuperP2(); 14 p.gongfu(); 15 } 16 }
注意前提:
1.上面的代码我在Eclipse里编写的;
2.上面的所有代码都是在一个Class文件里的。
下面是在eclipse里面的显示,感觉是非常正常,没有任何的报错。
运行之后就傻眼了!!!!
前前后后检查了无数遍,都没错啊。。。
经过一系列的方案,我想那就搬出编译器鼻祖来验证我编写的程序有没有问题吧。
=====记事本,我把上面的所有代码都黏贴到一个记事本里面。用最初学习大方法开始编译和执行这段代码:
这时候,我宁愿它显示执行不通过。这样我还能找到哪里错了。结果编译、职执行都通过了,在eclipse里依然通不过,真不知道咋整好了。
于是,我请教了大神。
嗯嗯,大神就是经验多,照做了以后真的就成了。可是,我心里依然有疑惑,为啥同样的代码,黏贴在记事本里,再编译、执行都可以。
我去找了一下dos命令下生成的文件,终于发现问题所在了:
看见没有,它自动将你一个文件里的多个类,分别创建一个.class文件了。这就是神奇之处啊啊啊啊啊。以前学习的时候,知道会这么做,有这么一件事,可也没觉得有啥好处。今天算是领教啦。
再看看eclipse里的文件:
再看看我和大神的对话,简直自己美上天了。
最后,再用eclipse验证一下:
通过这个事件,真是的到了血的教训。知道以后编写程序的时候,有个好习惯的重要性——接口、抽象类都要单建。我会继续努力的。