黑马程序员技术交流社区

标题: 关于类加载的问题 [打印本页]

作者: 程洋    时间: 2013-12-6 09:36
标题: 关于类加载的问题
通过下面的小程序来说明下(程序是错的)
  1. class demo
  2. {
  3.         abstract void show();
  4. }
  5. class demoTest
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 System.out.print("demo什么时候加载了");
  10.         }
  11. }
复制代码

运行以后:
demoTest.java:1: 错误: demo不是抽象的, 并且未覆盖demo中的抽象方法show()
class demo
^
1 个错误
这说明类已经加载类,要不不会报这个错误
问下大手们,类是什么时候加载的.
作者: 白_蓝(八公)    时间: 2013-12-6 09:55
其实你报错误!就很明显没有在cmd~控制台进行java····运行~~而是进行编译(javac)的时候报错的~也就是说!··类在你编译的时候就运行···希望对你有帮助
作者: 目标    时间: 2013-12-6 09:55
你代码错了 demo类中有抽象方法,所以demo类也应该是抽象的,所以应该是 abstract class demo
作者: 几番意难相付    时间: 2013-12-6 09:56
类并没有被加载 这是编译器的错误提示
因为你的demo类中只有一个抽象方法 如果一个类中含有抽象方法,那么这个类必须也要用abstract来修饰
所以 这个类并不是被运行的时候报错 而是在编译时就报错了
作者: ┾——黑马    时间: 2013-12-6 09:59
这是编译时期的错误,类并没有加载呢!还有你类应该定义为抽象的,因为你类中有抽象方法
作者: ZHMing    时间: 2013-12-6 10:01
这个类并没有被加载,在编译的时候已经产生了错误,根本没进入到运行。
作者: 程洋    时间: 2013-12-6 14:58
目标 发表于 2013-12-6 09:55
你代码错了 demo类中有抽象方法,所以demo类也应该是抽象的,所以应该是 abstract class demo ...

我都告诉你我代码是错的,因为只有错了才能证明类已经加载了,我就是想知道类是怎样加载的(或者说在主函数里的那句代码让类加载了)
作者: 王家胜    时间: 2013-12-6 15:18
根本没有加载,如果报错也可运行,因为报错的是一个类,而你new或反射或当脚本运行

1.png (34.71 KB, 下载次数: 18)

代码状态

代码状态

2.png (69.51 KB, 下载次数: 16)

执行效果

执行效果

3.png (61.71 KB, 下载次数: 24)

执行结果

执行结果

作者: 程洋    时间: 2013-12-6 15:24
王家胜 发表于 2013-12-6 15:18
根本没有加载,如果报错也可运行,因为报错的是一个类,而你new或反射或当脚本运行
...

好吧,还没有学到反射,我理解错了以为编译出错就是运行了(类就加载了),是不是可以这样理解:编译时就是从代码第一行开始一直按顺序一直到结尾;而运行则是从主函数开始?
作者: 王家胜    时间: 2013-12-6 15:30
不是,编译是不是从第一行开始我不知道。但首先绝对不是从main开始执行的,还于初始化有关,好好学到时候你就知道了




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