黑马程序员技术交流社区
标题:
关于反射的一点小疑问
[打印本页]
作者:
黑马张国礼
时间:
2012-6-8 08:14
标题:
关于反射的一点小疑问
字节码,Class,类之间到底是什么关系?
Class的实例是类?Class又是字节码,字节码又代表类?
由于功力尚浅,看了两遍视频了,还是没有彻底捋清他们三者之间的关系
作者:
刘克方
时间:
2012-6-8 08:24
本帖最后由 刘克方 于 2012-6-8 09:05 编辑
类是对同一类事物的描述,Class也是一种类,不过它是对类描述的类;
所以它提供了一些方法,来告诉我们一个类有哪些方法,变量,构造方法等;
字节码就是java虚拟机将类编译成对应的.class文件
作者:
宋浩
时间:
2012-6-8 08:49
类就是描述事物的,例如Person类,它有属性name和age,编译器能够了解它。。
字节码就是编译之后让虚拟机可以认识的代码。。
Class也是java的一个类,一个类对应一个字节码,可以产生多个对象!!
作者:
付信榕
时间:
2012-6-8 09:05
字节码,Class,类之间到底是什么关系?
Class是一个类啊,Class是描述Java类的类,它(Class类)的各个实例对象分别对应各个类在内存中的字节码。类加载进内存里面的时候,其实就是字节码文件。
结合后面的反射的精简定义是:把java类中的各种成分映射成相应的java类。可以这样理解:class A{
成员变量;-->相应一个java类的实例对象
成员方法;--> 相应一个java类的实例对象
构造方法;--> 相应一个java类的实例对象
。。。
}
A在内存对应是一份大的字节码,它的内容又是由一份份字节码组成的,而Class就是管理这么多的字节码。
总结:是类,在内存中就有字节码,有字节码就得归Class管。
作者:
赵兵锋
时间:
2012-6-8 09:20
类是逻辑意义上的,Class是类在代码中的反映和表现,字节码是在java虚拟机中对类的表示形式。
class Person{//这是一个类。封装了“人”的属性
private String name;
public static void main(String[] args){
Person p = new Person();//将类Person实例化,就是对象p。
}
}
复制代码
这段代码想要执行,必须先被编译成字节码文件即class文件,装载进内存后,才能被java虚拟机执行。
作者:
雷云红
时间:
2012-6-8 10:17
类加载进内存里面的时候,其实就是字节码文件,所以这个你明白了吧,类加载过以后,你用new将类实例化成了一个具体的东西,就比如说类是图纸的话,小汽车就是对象,类里面有小汽车必须的结构,特征,以及使用方法,不是么,我用类做出来了对象,你可以这样理解类和对象的关系,所以现在这样总结一下比较合适吧,对象是小汽车,小汽车是用图纸做出来的,这个图纸就是类,我不知道将字节码文件比作是做小汽车的零件是否合适,如果将字节码比作是零件的话,这些个零件放在一起就属于Class的对象,明白么,?Class也是一个类,也是有对象的,这个可能比较难理解,你多看两遍张老师高新视频上讲这个地方的那几个就明白了吧
总的来说:Class是一个类啊,Class类代表Java类,它(Class类)的各个实例对象分别对应各个类在内存中的字节码。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2