
类和对象的本质区别是什么很多新人来问我这个问题的时候我通常都会用iPhone的设计方案和实际手机来打比方。如下图类就是iPhone的设计方案。方案上不仅写着屏幕尺寸、摄像头位置、接口类型这些零件信息还写着每个按钮按下去该触发什么功能。它描述了一台 iPhone 应该长什么样、能干什么但设计方案本身不会打电话也不会拍照只有按照它生产出来的手机才能真正工作。对象就是工厂按这份方案生产出来的具体手机。你手里这台 iPhone有具体的颜色、容量、壁纸、安装的应用。它是真实存在的也拥有属于自己的状态。所有对象都必须按照某个类来创建。没有设计方案就造不出手机。那为什么要发明类这个东西如果没有类每创建一个对象都得重新描述它有哪些属性、哪些行为。类的作用就是把这类对象共同的定义抽出来只写一次然后反复使用。落到Java里写法也差不多class User { String name; } User a new User(); a.name 张三; User b new User(); b.name 李四;这里的class User{}就是设计方案new User()就是按照设计方案生产出一台手机。。a和b是两台具体的手机都来自同一份设计方案。注意它们虽然是同型号但彼此独立。修改a.name不会影响b.name就像两台iPhone一台换了壁纸、装了微信另一台不会跟着一起变。所以类和对象的本质区别可以概括为类负责描述规则对象负责承载数据并参与程序运行。对象则是程序运行时创建出来的具体个体它拥有属于自己的状态并实际存在于内存中。从程序运行的角度看类只是对数据结构和行为规则的一种描述真正占用内存、保存数据并在运行过程中参与方法调用的是对象。理解了类和对象的关系后面学习继承、多态、接口、反射时就容易多了。因为这些特性本质上都是围绕「类如何定义对象、对象如何组织和使用」展开的。小结类和对象最大的区别不是模板和实例这六个字而是它们承担的职责完全不同。类负责定义一类对象共同拥有的属性和行为它回答的是这一类对象应该是什么样对象则是在程序运行过程中创建出来的具体个体它保存着自己的数据拥有独立的状态并真正参与程序运行。一句话记住类负责定义规则对象负责保存状态并在运行过程中按照这些规则工作。