1. 封装(Encapsulation)
一句话解释
把属性藏起来,不让外面随便改,只留公开方法访问。
核心:安全、可控、保护数据
生活例子
你有个银行卡:
- 钱(余额)是藏在里面的
- 你不能直接伸手去改余额
- 只能通过存/取这两个方法操作
代码例子
publicclassUser{// 私有属性,外面不能直接访问privateStringname;privateintage;// 公开方法,让外面可控地访问/修改publicStringgetName(){returnname;}publicvoidsetAge(intage){// 这里可以加控制!!!封装的精髓if(age<0||age>150){System.out.println("年龄不合法");return;}this.age=age;}}为什么要用?
- 防止乱改数据(比如年龄设成 -10)
- 内部逻辑可以随便改,外部不受影响
- 代码更安全、更好维护
2. 继承(Inheritance)
一句话解释
子类继承父类,直接拥有父类的属性和方法,不用重复写。
核心:代码复用、层级关系
生活例子
- 父类:人(有名字、年龄、会吃饭、睡觉)
- 子类:学生→ 继承人类
学生自动有:名字、年龄、吃饭、睡觉
学生额外有:学号、学习方法
代码例子
// 父类publicclassPerson{Stringname;intage;publicvoideat(){System.out.println("吃饭");}}// 子类 extends 父类publicclassStudentextendsPerson{// 自动拥有 name、age、eat()StringstudentId;publicvoidstudy(){System.out.println("学习");}}好处
- 不用重复写相同代码
- 结构清晰
- 方便统一扩展、修改
3. 多态(Polymorphism)
一句话解释
同一个方法,在不同子类里表现出不同行为。
核心:父类引用指向子类对象,调用时表现子类行为
生活例子
- 父:动物→ 有个方法叫
叫() - 狗:
叫()→ 汪汪汪 - 猫:
叫()→ 喵喵喵 - 羊:
叫()→ 咩咩咩
同样是“叫”,结果不一样 → 这就是多态。
代码例子
// 父类publicclassAnimal{publicvoidshout(){System.out.println("动物叫");}}// 子类1publicclassDogextendsAnimal{@Overridepublicvoidshout(){System.out.println("汪汪汪");}}// 子类2publicclassCatextendsAnimal{@Overridepublicvoidshout(){System.out.println("喵喵喵");}}使用:
Animala1=newDog();Animala2=newCat();a1.shout();// 输出:汪汪汪a2.shout();// 输出:喵喵喵多态的 3 个必要条件
- 继承
- 方法重写(@Override)
- 父类引用指向子类对象
终极一句话总结
- 封装:把数据藏起来,安全可控
- 继承:子类抄父类作业,少写代码
- 多态:同一个方法,不同子类有不同表现