接口、抽象类都要单建(好习惯)

今天,二轮复习到接口和抽象类。就随随便便 建立一个特别简单的抽象类,没先到,万万没想到遇到了麻烦。

下面是我的反面教材,就这个憋了我一上午。各种查资料,搜帖子,还重新设置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验证一下:

通过这个事件,真是的到了血的教训。知道以后编写程序的时候,有个好习惯的重要性——接口、抽象类都要单建。我会继续努力的。

原文地址:https://www.cnblogs.com/1693977889zz/p/7085636.html