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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程洋 中级黑马   /  2013-12-6 09:36  /  1071 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

通过下面的小程序来说明下(程序是错的)
  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 个错误
这说明类已经加载类,要不不会报这个错误
问下大手们,类是什么时候加载的.

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

9 个回复

正序浏览
不是,编译是不是从第一行开始我不知道。但首先绝对不是从main开始执行的,还于初始化有关,好好学到时候你就知道了
回复 使用道具 举报
程洋 中级黑马 2013-12-6 15:24:02
9#
王家胜 发表于 2013-12-6 15:18
根本没有加载,如果报错也可运行,因为报错的是一个类,而你new或反射或当脚本运行
...

好吧,还没有学到反射,我理解错了以为编译出错就是运行了(类就加载了),是不是可以这样理解:编译时就是从代码第一行开始一直按顺序一直到结尾;而运行则是从主函数开始?
回复 使用道具 举报
根本没有加载,如果报错也可运行,因为报错的是一个类,而你new或反射或当脚本运行

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

代码状态

代码状态

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

执行效果

执行效果

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

执行结果

执行结果

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
程洋 中级黑马 2013-12-6 14:58:48
7#
目标 发表于 2013-12-6 09:55
你代码错了 demo类中有抽象方法,所以demo类也应该是抽象的,所以应该是 abstract class demo ...

我都告诉你我代码是错的,因为只有错了才能证明类已经加载了,我就是想知道类是怎样加载的(或者说在主函数里的那句代码让类加载了)
回复 使用道具 举报
这个类并没有被加载,在编译的时候已经产生了错误,根本没进入到运行。
回复 使用道具 举报
这是编译时期的错误,类并没有加载呢!还有你类应该定义为抽象的,因为你类中有抽象方法
回复 使用道具 举报
类并没有被加载 这是编译器的错误提示
因为你的demo类中只有一个抽象方法 如果一个类中含有抽象方法,那么这个类必须也要用abstract来修饰
所以 这个类并不是被运行的时候报错 而是在编译时就报错了

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
你代码错了 demo类中有抽象方法,所以demo类也应该是抽象的,所以应该是 abstract class demo
回复 使用道具 举报 0 1
其实你报错误!就很明显没有在cmd~控制台进行java····运行~~而是进行编译(javac)的时候报错的~也就是说!··类在你编译的时候就运行···希望对你有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马