Java 四大面向对象特性:封装、继承、多态、抽象(多视角讲解)

先明确:Java 四大核心面向对象特性分别是 封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)、抽象(Abstraction)。下面从通俗生活视角、代码实现视角、设计思想视角、工程实战视角四个维度逐一讲解。


一、封装 Encapsulation

1. 生活视角

手机就是典型封装:外部只露出屏幕、按键、充电口,内部电路板、电池、芯片全部隐藏。用户只能通过公开按钮操作,不能直接修改内部电路,防止误操作损坏设备。

2. 代码实现视角

  • 私有化成员变量 private,禁止外部直接访问;
  • 提供公共 getter/setter 方法做访问入口;
  • 在方法内部增加数据校验逻辑。
public class User {
    // 私有成员变量
    private int age;
    // 公开访问接口,增加数据校验
    public void setAge(int age) {
        if(age < 0 || age > 150) throw new RuntimeException("年龄非法");
        this.age = age;
    }
    public int getAge(){ return age; }
}

3. 设计思想视角

信息隐藏 + 访问控制。把对象内部状态和实现细节隐藏,只对外暴露可控接口,降低外部随意篡改数据的风险。

4. 工程实战视角

  • 便于后期修改内部逻辑,外部调用代码不用改动;
  • 统一数据校验入口,避免脏数据;
  • 模块化解耦,符合高内聚低耦合原则。

二、继承 Inheritance

1. 生活视角

父子关系:子女可以继承父辈的财产、长相、基因,同时也能拥有自己独有的特征。汽车分为燃油车、电动车,都继承 “车” 的通用属性(车轮、方向盘),各自扩展动力方式。

2. 代码实现视角

使用 extends 实现类继承,子类复用父类非私有属性和方法,支持方法重写 @Override;Java 只支持单继承,可以多实现接口。

// 父类
class Animal {
    public void run(){}
}
// 子类继承
class Dog extends Animal {
    @Override
    public void run(){
        System.out.println("小狗奔跑");
    }
}

3. 设计思想视角

代码复用 + 泛化关系(is-a)。提取公共逻辑到父类,子类只关注差异化逻辑;表达 “子类是一种父类” 的从属关系。

4. 工程实战视角

优点:减少重复代码,便于统一维护公共逻辑。弊端:继承是强耦合关系,父类改动容易影响所有子类;复杂业务优先用组合替代继承


三、多态 Polymorphism

1. 生活视角

同一个指令 “发出声音”,不同对象表现不同:猫喵喵叫、狗汪汪叫、小鸟叽叽喳喳。同一个遥控器按键,电视、空调做出不同响应。

2. 代码实现视角

多态三要素:父类引用指向子类对象 + 方法重写 + 运行时动态绑定

Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.run(); // 执行Dog的run
animal2.run(); // 执行Cat的run

两种形式:

  1. 编译多态(静态):方法重载 Overload
  2. 运行多态(动态):方法重写 Override

3. 设计思想视角

同一个行为,不同实现。面向父类 / 接口编程,运行时才确定具体执行哪个子类的逻辑。

4. 工程实战视角

核心是开闭原则:新增业务子类不需要修改原有调用代码。Spring、SpringBoot 大量依赖多态实现依赖注入、策略模式、插件化架构。


四、抽象 Abstraction

1. 生活视角

“交通工具” 就是抽象概念,只定义能载人、能行驶的行为,没有具体实物;火车、飞机、汽车都是对抽象概念的具体实现。

2. 代码实现视角

两种抽象方式:

  1. 抽象类 abstract class:可以有普通方法、成员变量,存在抽象方法,不能实例化;
  2. 接口 interface(JDK8 + 支持默认方法、静态方法):定义行为契约,侧重能力定义。
abstract class Vehicle {
    public abstract void move(); // 抽象方法,无实现
}

interface Driveable {
    void drive();
}

3. 设计思想视角

抽取共性行为,屏蔽具体实现。只定义 “要做什么”,不关心 “怎么做”。抽象是封装、继承、多态的基础。

4. 工程实战视角

用来定义顶层规范、统一接口标准。比如 RPC 接口、DAO 层接口、业务策略顶层抽象,面向抽象编程,极大提升扩展性。


四大特性整体关系(串联视角)

  1. 抽象:定下规范和行为(地基)
  2. 封装:保护每个对象内部数据(安全机制)
  3. 继承:复用代码,衍生具体子类(代码复用)
  4. 多态:基于抽象和继承实现灵活调用(最终落地能力)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值