Java面向对象三大特征是封装、继承、多态:封装通过private+校验setter保护数据;继承用extends复用共性逻辑;多态以父类引用调用子类重写方法实现灵活扩展。

Java面向对象三大特征——封装、继承、多态,不是抽象概念,而是解决实际编码问题的三把钥匙。理解它们的关键,在于抓住各自要应对的典型问题:怎么保护数据?怎么复用代码?怎么让同一调用适配不同场景?
封装:控制访问,守住数据边界
封装的本质是“限制直接访问 + 提供可控入口”。不是简单加个private就完事,而是有明确目的:防止非法数据写入、隐藏实现变化、降低模块依赖。
- 属性一律用private修饰,切断外部直连通道
- 提供public的 getter/setter 方法,但 setter 中必须加入校验逻辑(比如年龄在0–150之间、分数在0–100之间)
- 敏感操作(如密码设置)可在 setter 内自动加密,调用方完全无感
- 对外暴露的方法名要语义清晰(如pay()、cancelOrder()),不暴露内部是调数据库还是发消息
继承:提取共性,避免重复造轮子
继承解决的是“多个类有大量相同字段和方法”的问题。它不是为了套关系,而是为了集中维护公共逻辑。
- 用extends声明父子关系,子类自动获得父类非private成员
- 父类应聚焦“共性”,比如Animal类定义name和eat(),Dog和Cat只补充各自特有行为(bark()、meow())
- 子类重写父类方法时,用@Override标注,并通过super调用父类原始逻辑(比如先记录日志再执行业务)
- 注意 Java 只支持单继承,共性功能若跨维度(如“能飞”“能游泳”),更适合用接口实现
多态:统一接口,灵活切换实现
多态让程序更易扩展。核心是“父类引用指向子类对象”,运行时才决定执行哪个版本的方法。
- 向上转型是前提:例如Animal a = new Dog();,此时调用a.eat()会执行Dog重写的版本
- 方法重写(Override)是基础,重载(Overload)属于编译时多态,不算OOP三大特征中的“多态”本意
- 典型应用:支付模块中定义Payment接口,Alipay、WechatPay各自实现pay();业务层只依赖Payment,新增支付方式无需改原有代码
- 配合instanceof和向下转型可做类型特判,但应尽量少用,优先靠设计(如策略模式)规避
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











