为什么很多人学了Java,还是没真正理解类和对象?

类和对象的本质区别是什么?

很多新人来问我这个问题的时候,我通常都会用iPhone的设计方案和实际手机来打比方。如下图:

类就是iPhone的设计方案。

方案上不仅写着屏幕尺寸、摄像头位置、接口类型这些零件信息,还写着每个按钮按下去该触发什么功能。它描述了一台 iPhone 应该长什么样、能干什么,但设计方案本身不会打电话,也不会拍照,只有按照它生产出来的手机才能真正工作。

对象就是工厂按这份方案生产出来的具体手机。

你手里这台 iPhone,有具体的颜色、容量、壁纸、安装的应用。它是真实存在的,也拥有属于自己的状态。

所有对象都必须按照某个类来创建。没有设计方案,就造不出手机。

那为什么要发明类这个东西?如果没有类,每创建一个对象,都得重新描述它有哪些属性、哪些行为。类的作用,就是把这类对象共同的定义抽出来,只写一次,然后反复使用。

落到Java里,写法也差不多:

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,一台换了壁纸、装了微信,另一台不会跟着一起变。

所以类和对象的本质区别,可以概括为:

类负责描述规则,对象负责承载数据并参与程序运行。

对象则是程序运行时创建出来的具体个体,它拥有属于自己的状态,并实际存在于内存中。

从程序运行的角度看,类只是对数据结构和行为规则的一种描述;真正占用内存、保存数据,并在运行过程中参与方法调用的,是对象。

理解了类和对象的关系,后面学习继承、多态、接口、反射时就容易多了。因为这些特性,本质上都是围绕「类如何定义对象、对象如何组织和使用」展开的。

小结

类和对象最大的区别,不是模板和实例这六个字,而是它们承担的职责完全不同。

类负责定义一类对象共同拥有的属性和行为,它回答的是这一类对象应该是什么样;对象则是在程序运行过程中创建出来的具体个体,它保存着自己的数据,拥有独立的状态,并真正参与程序运行。

一句话记住:类负责定义规则,对象负责保存状态,并在运行过程中按照这些规则工作。

相关推荐
猿究院_夏燊5 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog6 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿6 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
救救孩子把6 小时前
AI面试八股文-21_21-多模态Agent面试题-Vision-Language-Agent
人工智能·面试·职场和发展·llava·多模态agent
砚底藏山河6 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
Jlzn88887 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
香吧香7 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
CCblandy7 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
我是人✓7 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 阿里云 OSS 入门案例:从创建 Bucket 到上传拿到可访问 URL
java·阿里云·交友