转变Java面向对象思维的关键是将“怎么做”转为“谁来做”,即从流程步骤转向角色分工,先识别实体(如学生、订单),再定义其属性与行为,通过封装使对象自主负责职责。

转变Java面向对象编程思维,关键不是背概念,而是把“怎么做”换成“谁来做”。你原来写代码像自己动手拧螺丝,现在要学着发号施令——让合适的对象去完成对应的事。
从“步骤清单”切换到“角色分工”
面向过程关注流程:输入→计算→输出;面向对象关注实体:谁有这些数据?谁该负责这个动作?
- 看到需求时,先停一下,问:“这里面有哪些独立的、能叫出名字的东西?”比如“学生”“订单”“支付方式”
- 再问:“每个东西有什么特征?”——姓名、学号、下单时间、金额、付款状态
- 最后问:“每个东西能主动干什么?”——学生能算平均分、订单能确认收货、支付方式能执行扣款
用现实类比理解类和对象
类就像一张身份证模板,规定了“人”该有哪些字段(姓名、性别、出生日期);对象就是按这张模板办出来的某张真实身份证,比如“张三,男,2001年5月”。
- 表格的列 → 类的属性(String name;)
- 表格的行 → 一个具体对象(Student s1 = new Student();)
- 表格里每行都能执行相同操作(如“打印信息”)→ 类里的方法(s1.showInfo();)
接受“封装”是起点,不是终点
别急着写继承和多态。先确保你能自然地把一组相关数据+操作打包成一个类,并让外部只通过方法和它打交道。
立即学习“Java免费学习笔记(深入)”;
- 把“学生姓名、数学成绩、英语成绩”和“算平均分”“打印成绩”放在一起,就是一个合理的类
- 避免把所有变量都写成 public,也别一上来就加 private + getter/setter 套路——先想清楚:哪些信息真该被别人直接改?
- 方法命名尽量动词开头(calculateAvg()、submitOrder()),让人一眼看出“这是谁在做什么”
允许微观仍用面向过程
类里面的方法体,依然可以按步骤写逻辑。面向对象管的是“谁来承担职责”,不禁止“怎么实现细节”。
- 比如 withdraw(double amount) 方法内部,判断余额、扣减、记录日志……这些步骤用 if/for 写完全没问题
- 重点是:这笔取款动作属于“账户对象”的责任,而不是散落在 main 里一堆变量和函数中
- 系统越大,越需要靠“分清楚谁管什么”来降低协作成本,而不是靠“每个人记住全部步骤”



















