关于面向对象的三大特征的实际案例

简介: 结合生活场景与Java代码,生动诠释面向对象三大特征:封装保障数据安全,继承实现共性复用,多态支持同一操作不同实现,助你直观掌握核心原理!

用生活场景+Java代码结合的案例,能更直观理解三大特征的实际用途!

一、封装:实体类的数据安全控制

生活场景:银行账户的余额,不能直接修改,只能通过存钱、取钱的正规操作变更。
代码案例

// 账户类(封装属性,暴露安全方法)
class BankAccount {
   
    // 私有属性,外部无法直接访问
    private String accountNum;
    private double balance;

    // 构造器初始化
    public BankAccount(String accountNum, double balance) {
   
        this.accountNum = accountNum;
        // 存款金额校验(封装的逻辑优势)
        this.balance = balance > 0 ? balance : 0;
    }

    // getter方法:外部获取余额
    public double getBalance() {
   
        return balance;
    }

    // setter方法:外部通过存钱操作修改余额
    public void deposit(double money) {
   
        if (money > 0) {
   
            balance += money;
            System.out.println("存款成功,当前余额:" + balance);
        } else {
   
            System.out.println("存款金额必须大于0");
        }
    }
}

// 测试类
public class TestEncapsulation {
   
    public static void main(String[] args) {
   
        BankAccount account = new BankAccount("622202XXXX", 1000);
        // 无法直接修改balance(编译报错)
        // account.balance = 5000;
        // 通过封装的方法操作
        account.deposit(2000); // 输出:存款成功,当前余额:3000.0
        account.deposit(-500); // 输出:存款金额必须大于0
    }
}

二、继承:复用父类功能,扩展子类特性

生活场景:猫和狗都是动物,都有“吃饭”“叫”的共性,也有各自的专属行为(猫抓老鼠、狗看门)。
代码案例

// 父类(提取共性)
class Animal {
   
    String name;

    public Animal(String name) {
   
        this.name = name;
    }

    // 共性方法
    public void eat() {
   
        System.out.println(name + "在吃饭");
    }

    public void shout() {
   
        System.out.println(name + "在叫");
    }
}

// 子类继承父类,复用共性+扩展特性
class Cat extends Animal {
   
    public Cat(String name) {
   
        super(name); // 调用父类构造器
    }

    // 重写父类方法(适配子类特性)
    @Override
    public void shout() {
   
        System.out.println(name + "喵喵叫");
    }

    // 子类专属方法
    public void catchMouse() {
   
        System.out.println(name + "在抓老鼠");
    }
}

// 测试类
public class TestInheritance {
   
    public static void main(String[] args) {
   
        Cat tom = new Cat("汤姆");
        tom.eat(); // 复用父类方法:汤姆在吃饭
        tom.shout(); // 重写后方法:汤姆喵喵叫
        tom.catchMouse(); // 子类专属:汤姆在抓老鼠
    }
}

三、多态:同一行为,不同实现

生活场景:同样是“支付”行为,用微信支付、支付宝支付的流程不同,但用户只需调用“支付”动作即可。
代码案例

// 父类/接口(定义统一行为)
interface Payment {
   
    void pay(double money); // 统一支付方法
}

// 子类1:微信支付实现
class WeChatPay implements Payment {
   
    @Override
    public void pay(double money) {
   
        System.out.println("微信支付" + money + "元,已扣除零钱余额");
    }
}

// 子类2:支付宝支付实现
class Alipay implements Payment {
   
    @Override
    public void pay(double money) {
   
        System.out.println("支付宝支付" + money + "元,已扣除余额宝金额");
    }
}

// 测试类(多态核心:父类引用指向子类对象)
public class TestPolymorphism {
   
    public static void main(String[] args) {
   
        Payment pay1 = new WeChatPay();
        Payment pay2 = new Alipay();

        pay1.pay(100); // 输出:微信支付100.0元,已扣除零钱余额
        pay2.pay(200); // 输出:支付宝支付200.0元,已扣除余额宝金额
    }
}

要不要我帮你整理一份三大特征综合案例代码(含注释),把封装、继承、多态结合到一个完整场景中,方便你直接运行学习?

相关文章
|
3月前
|
搜索推荐 算法 小程序
基于微信小程序的个性化漫画阅读推荐系统
本研究设计并实现基于微信小程序的个性化漫画推荐系统,结合用户行为数据与先进算法,提升阅读体验与平台黏性,推动漫画产业数字化发展。
|
3月前
|
SQL 缓存 Java
【Java架构必看】Mybatis的工作原理
MyBatis执行分启动与运行两阶段:启动时加载配置,运行时代理执行SQL。通过JDK动态代理生成Mapper接口,结合缓存机制与Executor执行SQL,最终由TypeHandler完成结果映射。
193 4
|
4月前
|
存储 缓存 安全
针对Java集合框架的面试题有哪些
Java集合框架是面试重点,涵盖List、Set、Map等接口及其实现类的底层结构、线程安全、性能对比。常见问题包括ArrayList与LinkedList区别、HashMap原理、ConcurrentHashMap线程安全机制、HashSet去重逻辑等,需结合源码深入理解核心方法与设计思想。
290 3
|
4月前
|
人工智能 开发框架 安全
浅谈 Agent 开发工具链演进历程
模型带来了意识和自主性,但在输出结果的确定性和一致性上降低了。无论是基础大模型厂商,还是提供开发工具链和运行保障的厂家,本质都是希望提升输出的可靠性,只是不同的团队基因和行业判断,提供了不同的实现路径。本文按四个阶段,通过串联一些知名的开发工具,来回顾 Agent 开发工具链的演进历程。
840 64
Windows下的CMake下载与安装
Windows下的CMake下载与安装
Windows下的CMake下载与安装
|
3月前
|
移动开发 数据可视化 安全
数字孪生云渲染终极指南(一):什么是实时云渲染?
将三维可视化程序上云可以有效解决上述问题。通常可采用WebGL、HTML5、threejs、虚拟化、云桌面,以及云渲染等各类技术方案,实现客户端与服务端的分离,从一定程度上降低客户端硬件配置要求,提高程序兼容性。实时云渲染技术是目前最先进的云化技术之一,也是数字孪生三维可视化场景商业模式破局的关键。
391 155
数字孪生云渲染终极指南(一):什么是实时云渲染?
|
3月前
|
JavaScript 安全 前端开发
智能随访系统源码,如何使用Java Spring Boot,Vue,Ant Design快速开发一套医院随访系统
基于Spring Boot + Vue + Ant Design Vue技术栈开发的医疗随访系统,涵盖患者管理、随访计划与执行、统计报表及系统管理模块。前后端分离架构,支持多渠道随访,数据安全可控,具备良好的扩展性与开发效率。
251 0
|
3月前
|
运维 监控 数据可视化
别让运维跪着查日志了!给老板看的“业务观测”大盘才是真香
深夜告警、业务暴跌、全员背锅?一次支付故障暴露传统监控盲区。我们通过业务观测,将技术指标转化为老板听得懂的“人话”,实现从被动救火到主动洞察的跨越。让技术团队不再跪着查日志,而是站着驱动业务增长。
别让运维跪着查日志了!给老板看的“业务观测”大盘才是真香