欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Java面向对象三大特性深度解析

Java面向对象三大特性深度解析

2025/4/18 20:43:13 来源:https://blog.csdn.net/weixin_52242569/article/details/147117657  浏览:    关键词:Java面向对象三大特性深度解析

Java面向对象三大特性深度解析

一、封装 (Encapsulation)

1.1 核心实现

   public class BankAccount {// 私有化字段private String accountNumber;private double balance;private String owner;// 构造方法封装初始化逻辑public BankAccount(String accountNumber, String owner) {if(accountNumber == null || accountNumber.isEmpty()) {throw new IllegalArgumentException("账号不能为空");}this.accountNumber = accountNumber;this.owner = owner;this.balance = 0.0;}// 受控的访问方法public void deposit(double amount) {if(amount <= 0) {throw new IllegalArgumentException("存款金额必须为正数");}this.balance += amount;}public void withdraw(double amount) {if(amount <= 0) {throw new IllegalArgumentException("取款金额必须为正数");}if(amount > balance) {throw new IllegalStateException("余额不足");}this.balance -= amount;}// 只读访问public double getBalance() {return balance;}}

1.2 核心价值

  • 安全性:防止非法数据修改(如余额不能直接设置)
  • 可维护性:内部实现变更不影响调用方(如余额存储单位从元改为分)
  • 数据验证:保证对象始终处于有效状态(如取款不能超过余额)

1.3 设计模式应用

  • 工厂模式:封装对象创建过程
  • 建造者模式:封装复杂对象的构建过程
  • 代理模式:封装实际对象的访问

二、继承 (Inheritance)

2.1 完整示例

   // 基类abstract class Shape {protected String color;public Shape(String color) {this.color = color;}// 抽象方法强制子类实现public abstract double area();public void display() {System.out.println("这是" + color + "的图形");}}// 子类继承class Circle extends Shape {private double radius;public Circle(String color, double radius) {super(color);  // 调用父类构造this.radius = radius;}@Overridepublic double area() {return Math.PI * radius * radius;}// 子类特有方法public double perimeter() {return 2 * Math.PI * radius;}}// 多层继承class Cylinder extends Circle {private double height;public Cylinder(String color, double radius, double height) {super(color, radius);this.height = height;}@Overridepublic double area() {// 重写父类方法return 2 * super.area() + perimeter() * height;}public double volume() {return super.area() * height;}}

2.2 核心价值

  • 代码复用:共用父类属性和方法
  • 扩展性:通过继承扩展新功能
  • 多态基础:为运行时多态提供条件

2.3 设计模式应用

  • 模板方法模式:父类定义算法骨架
  • 装饰器模式:通过继承扩展功能
  • 组合模式:处理树形结构

三、多态 (Polymorphism)

3.1 完整示例

   interface Payment {void pay(double amount);}class CreditCard implements Payment {@Overridepublic void pay(double amount) {System.out.println("信用卡支付:" + amount + "元");}}class Alipay implements Payment {@Overridepublic void pay(double amount) {System.out.println("支付宝支付:" + amount + "元");}}class PaymentProcessor {public void processPayment(Payment payment, double amount) {// 多态调用payment.pay(amount);}}// 使用示例public class Main {public static void main(String[] args) {PaymentProcessor processor = new PaymentProcessor();// 同一接口不同表现processor.processPayment(new CreditCard(), 100.0);processor.processPayment(new Alipay(), 200.0);// 运行时多态Payment payment = Math.random() > 0.5 ? new CreditCard() : new Alipay();payment.pay(300.0);}}

3.2 核心价值

  • 扩展性:新增支付方式无需修改处理器代码
  • 解耦:调用方只依赖抽象接口
  • 灵活性:运行时动态决定具体实现

3.3 设计模式应用

  • 策略模式:算法可互换
  • 命令模式:将请求封装为对象
  • 观察者模式:事件处理多态

四、三大特性协同应用

4.1 典型协作示例

// 封装基础public abstract class Employee {private String name;private int id;public Employee(String name, int id) {this.name = name;this.id = id;}// 封装通用行为public void work() {System.out.println(name + "开始工作");}// 多态接口public abstract void calculateSalary();}// 继承扩展class FullTimeEmployee extends Employee {private double monthlySalary;public FullTimeEmployee(String name, int id, double monthlySalary) {super(name, id);this.monthlySalary = monthlySalary;}@Overridepublic void calculateSalary() {System.out.println("固定月薪:" + monthlySalary);}}class PartTimeEmployee extends Employee {private double hourlyRate;private int hours;public PartTimeEmployee(String name, int id, double hourlyRate, int hours) {super(name, id);this.hourlyRate = hourlyRate;this.hours = hours;}@Overridepublic void calculateSalary() {System.out.println("计时工资:" + (hourlyRate * hours));}}// 使用多态class PayrollSystem {private List<Employee> employees = new ArrayList<>();public void addEmployee(Employee emp) {employees.add(emp);}public void processPayroll() {for(Employee emp : employees) {emp.work();emp.calculateSalary();  // 多态调用}}}

4.2 协同价值

  1. 封装保证对象内部状态安全
  2. 继承实现代码复用和层次化设计
  3. 多态提供统一接口处理不同实现

4.3 综合设计模式案例

工厂方法模式

   // 产品接口(多态)interface Logger {void log(String message);}// 具体产品(继承)class FileLogger implements Logger {@Overridepublic void log(String message) {System.out.println("文件记录:" + message);}}class DatabaseLogger implements Logger {@Overridepublic void log(String message) {System.out.println("数据库记录:" + message);}}// 工厂基类(封装创建逻辑)abstract class LoggerFactory {// 工厂方法(多态)public abstract Logger createLogger();// 封装通用逻辑public void writeLog() {Logger logger = createLogger();logger.log("测试日志");}}// 具体工厂(继承)class FileLoggerFactory extends LoggerFactory {@Overridepublic Logger createLogger() {return new FileLogger();}}class DatabaseLoggerFactory extends LoggerFactory {@Overridepublic Logger createLogger() {return new DatabaseLogger();}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词