京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Java面向对象四大特性,2025最新保姆级教程

2025-12-7 14:30| 发布者: 遗失的美好| 查看: 81| 评论: 0

摘要: Java面向对象从入门到精通,一次性讲透封装、继承、多态、抽象四大特性 + SOLID原则,全部配真实生产级代码! 建议收藏 + 点赞 + 转发,看完直接升中级开发!一、面向对象到底是什么?99%的人没讲明白一句话:把现实

Java面向对象从入门到精通,一次性讲透封装、继承、多态、抽象四大特性 + SOLID原则,全部配真实生产级代码! 建议收藏 + 点赞 + 转发,看完直接升中级开发!

Java面向对象四大特性,2025最新保姆级教程

一、面向对象到底是什么?99%的人没讲明白

一句话:把现实世界的一切都抽象成“对象” 你、我、手机、外卖订单……全是对象!

每个对象都有:

  • 属性(状态):你叫什么名字、多大年龄
  • 方法(行为):你会吃饭、会睡觉、会写代码

面向对象 vs 面向过程,一图秒懂

Java面向对象四大特性,2025最新保姆级教程

项目

面向过程

面向对象

关注点

步骤

对象

数据安全

裸奔

穿防护服(封装)

代码复用

函数复制粘贴

继承 + 组合

扩展性

拉胯

优秀

适合场景

简单脚本

企业级复杂系统

二、封装:大厂实体类都这么写(真实代码)

@Getter @Setterpublic class User {    private Long id;    private String username;    private String password;      // 明文绝不外泄    private String phone;    private String email;    private Integer age;    private Boolean enabled = true;    private LocalDateTime createTime;    // 密码永远脱敏返回    public String getPassword() {        return "******";    }    // 严格邮箱校验    public void setEmail(String email) {        if (email != null && !email.matches("^[\\w-\\.]+@([\\w-]+\\.)+[a-z]{2,4}$")) {            throw new IllegalArgumentException("邮箱格式不正确!");        }        this.email = email;    }    // 手机号校验 + 脱敏展示    public void setPhone(String phone) {        if (phone != null && !phone.matches("^1[3-9]\\d{9}$")) {            throw new IllegalArgumentException("手机号格式错误!");        }        this.phone = phone;    }    public String getPhone() {        if (StringUtils.isBlank(phone)) return "";        return phone.substring(0, 3) + "****" + phone.substring(7);    }}
Java面向对象四大特性,2025最新保姆级教程

三、继承:MyBatis-Plus真实用法(所有实体类都这么干)

// 所有表公共字段抽取@TableLogicpublic class BaseEntity {    @TableId(type = IdType.AUTO)    private Long id;        private LocalDateTime createTime;    private LocalDateTime updateTime;    private Boolean deleted = false;   // 逻辑删除    @PrePersist    public void prePersist() {        this.createTime = this.updateTime = LocalDateTime.now();    }    @PreUpdate    public void preUpdate() {        this.updateTime = LocalDateTime.now();    }}// 用户、订单、商品全部继承它public class User extends BaseEntity {    private String username;    private String phone;    private String avatar;}public class Order extends BaseEntity {    private String orderNo;    private BigDecimal amount;    private Integer status;}
Java面向对象四大特性,2025最新保姆级教程

四、多态:支付场景真实写法(Spring项目标配)

Java面向对象四大特性,2025最新保姆级教程

public interface PaymentStrategy {    boolean support(String payType);    PaymentResult pay(PayRequest request);}// 支付宝实现@Service("ALIPAY")public class AlipayStrategy implements PaymentStrategy {    @Override    public boolean support(String payType) {        return "alipay".equals(payType);    }    @Override    public PaymentResult pay(PayRequest request) {        // 调用支付宝SDK        return PaymentResult.success("支付宝支付成功");    }}// 微信实现@Service("WECHAT")public class WechatPayStrategy implements PaymentStrategy {    @Override    public boolean support(String payType) {        return "wechat".equals(payType);    }    // 类似实现...}// 统一入口(多态核心)@Servicepublic class PaymentService {    @Autowired    private List<PaymentStrategy> strategies;    public PaymentResult pay(String payType, PayRequest request) {        PaymentStrategy strategy = strategies.stream()            .filter(s -> s.support(payType))            .findFirst()            .orElseThrow(() -> new UnsupportedOperationException("不支持的支付方式"));                return strategy.pay(request);   // 同一行代码,多种实现!    }}

五、抽象:抽象类 vs 接口(2025最新区别)

Java面向对象四大特性,2025最新保姆级教程


项目

抽象类

接口

方法实现

可以有普通方法

Java8+可有default方法

成员变量

可以有普通变量

只能是public static final

继承关系

单继承

多实现

设计意图

is-a关系

can-do能力

六、SOLID五大原则(大厂面试必背)

Java面向对象四大特性,2025最新保姆级教程

  • S 单一职责:一个类只干一件事
  • O 开闭原则:对扩展开放,对修改关闭
  • L 里氏替换:子类能无缝替换父类
  • I 接口隔离:接口要小而专
  • D 依赖倒置:依赖抽象,不依赖具体实现

最后总结:OOP精髓就8个字

封装隐藏、继承复用、多态灵活、抽象解耦

Java面向对象四大特性,2025最新保姆级教程


查看详情:https://www.toutiao.com/article/7580997118224876082
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-12-14 22:31 , Processed in 0.204196 second(s), 17 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部