Java面向对象编程:封装、继承、多态实战指南

一、封装的本质与实践

(正文部分约2500字,包含代码示例和设计模式应用分析)

// 智能温度控制器案例
public class TemperatureController {
    private double currentTemp;
    private final double MAX_TEMP = 100.0;
    private final double MIN_TEMP = -20.0;

    // 方法级封装体现业务规则
    public void setTemperature(double newTemp) {
        if (newTemp > MAX_TEMP) {
            applyEmergencyCooling();
            return;
        }
        if (newTemp < MIN_TEMP) {
            activateFrostProtection();
            return;
        }
        this.currentTemp = newTemp;
        logTemperatureChange();
    }

    private void applyEmergencyCooling() { /* 硬件控制逻辑 */ }
    private void activateFrostProtection() { /* 设备保护逻辑 */ }
    private void logTemperatureChange() { /* 审计日志记录 */ }
}

二、继承的进阶应用与陷阱

(正文部分约2000字,包含继承树设计示例和组合替代方案)

// 电商支付系统继承案例
public abstract class PaymentProcessor {
    protected abstract boolean validate();
    protected abstract void executeTransaction();
    
    public final void process() {
        if (validate()) {
            executeTransaction();
            generateReceipt();
        }
    }
    
    private void generateReceipt() {
        // 通用收据生成逻辑
    }
}

public class CreditCardProcessor extends PaymentProcessor {
    @Override
    protected boolean validate() {
        // 信用卡验证逻辑
    }

    @Override
    protected void executeTransaction() {
        // 信用卡扣款实现
    }
}

三、多态的动态之美

(正文部分约2500字,包含类型系统解析和框架应用实例)

// 物流调度系统多态案例
interface Transport {
    double calculateEta(String origin, String destination);
    void dispatch();
}

class Truck implements Transport {
    @Override
    public double calculateEta(String o, String d) {
        return MapService.getDrivingTime(o, d);
    }

    @Override
    public void dispatch() {
        // 调用卡车调度API
    }
}

class Drone implements Transport {
    @Override
    public double calculateEta(String o, String d) {
        return MapService.getFlightTime(o, d) * 1.2;
    }

    @Override
    public void dispatch() {
        // 启动无人机协议
    }
}

class LogisticsSystem {
    public void optimizeDelivery(Transport transport) {
        double eta = transport.calculateEta("仓库", "客户地址");
        if (eta < 2.0) {
            transport.dispatch();
        }
    }
}
正文到此结束
评论插件初始化中...
Loading...