黑马程序员技术交流社区

标题: 类和对象的区别? [打印本页]

作者: 为梦而生    时间: 2013-11-29 23:15
标题: 类和对象的区别?
本帖最后由 为梦而生 于 2013-11-30 16:08 编辑

对象是一个你能够看得到、摸得着的具体实体,类是抽象的概念。这是类和对象从定义上的区别。
但是为什么类不占内存,对象才占内存?
类也需要创建啊,为什么不需要内存呢?哪它存哪里??


作者: xydsdsr    时间: 2013-11-30 00:14
类在没有实例化的时候是不开辟类对象的内存空间的,只有一个引用。初始化后如果两个对象是不同的就开辟两个。静态的都用一个。
作者: wang29901    时间: 2013-11-30 09:55
类是抽象化的概念,对象是类的具体实现,就像人类这个类中每个人都是它的一个对象
作者: 幸运儿见龙    时间: 2013-11-30 09:59
如同你说的对象是一个你能够看得到、摸得着的具体实体,类是抽象的概念。这是类和对象从定义上的区别。

对象是类的实例化,
类好比说班级学员这个抽象的定义吧,学员这个定义不占教室空间凳子的位置
具体实体化的学生对象 好比小张小李是具有具体名字有身高体重的人,才占据教室内空间凳子的位置

作者: 黑马—严守卫    时间: 2013-11-30 12:02
类就是一个模型,对象是根据模型创建的实体。就像铁剑的制作,是将铁水浇灌到模型中冷凝成型,只有铁剑使用了钢铁,而模具则没有使用钢铁。
作者: 刘吉烨    时间: 2013-11-30 12:03
类就是一类事物,而对象就是一个事物,一类事物中包含若干的事物
作者: u010209195    时间: 2013-11-30 14:30
类是一个抽象的集合,是一个抽象的概念,是从对象中的抽象出来的,包含对象的共有属性字段或方法,不占内存
对象就是类的实例,如果类是抽象的,对象就是实在的,类的对象会有类的属性,字段方法,对象占内存

人类和你  人类就是类 抽象的 人类的共性你也会有
你   就是一个具体的对象  你除了有类中的属性和字段还会有自己的属性字段方法;

MSDN上面介绍的:
“类”是一种构造,通过使用该构造,您可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。类就像一个蓝图,它定义类型的数据和行为。如果类没有声明为静态类,客户端代码就可以创建赋给变量的“对象”或“实例”,从而使用该类。在对变量的所有引用都超出范围之前,该变量始终保持在内存中。所有引用都超出范围时,CLR 将标记该变量以供垃圾回收。如果类声明为静态类,则内存中只存在一个副本,并且客户端代码只能通过该类自身而不是“实例变量”访问该类。
类或结构定义的作用类似于蓝图,指定该类型可以进行哪些操作。从本质上说,对象是按照此蓝图分配和配置的内存块。程序可以创建同一个类的多个对象。对象也称为实例,可以存储在命名变量中,也可以存储在数组或集合中。使用这些变量来调用对象方法及访问对象公共属性的代码称为客户端代码。在 C# 等面向对象的语言中,典型的程序由动态交互的多个对象组成
作者: u010209195    时间: 2013-11-30 14:44
u010209195 发表于 2013-11-30 14:30
类是一个抽象的集合,是一个抽象的概念,是从对象中的抽象出来的,包含对象的共有属性字段或方法,不占内存 ...

Class(类)可以被实例化,属于引用类型,是分配在内存的上的。类是引用传递的;
对象是new出来的,也就是通俗的说的实例化,new出来的对象是引用类型,也是分配在堆上面的;
程序写好之后又编译--->运行;
类和对象在编译的时候不会占用内存,只有分配在栈上面的才占内存;
(栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;例如:局部值类型变量、值类型参数等都在栈内存中

堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小;
类和对象在运行的时候是占用内存的,
不知道解释的对不对:o
作者: Coding    时间: 2013-11-30 18:15
理想化的图纸和大楼的关系
作者: Sayme    时间: 2013-11-30 20:05
类只是描述 而对象是具体的东西

对象是根据类来创建的

类是抽象的是空的 对象是一个实实在在的东西 所以需要占用内存
作者: 为梦而生    时间: 2013-11-30 20:24
u010209195 发表于 2013-11-30 14:44
Class(类)可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的;
对象是new出来的,也就是 ...

谢谢,受教了




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