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

简介: 结合生活场景与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元,已扣除余额宝金额
    }
}

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

相关文章
|
1月前
|
搜索推荐 算法 小程序
基于微信小程序的个性化漫画阅读推荐系统
本研究设计并实现基于微信小程序的个性化漫画推荐系统,结合用户行为数据与先进算法,提升阅读体验与平台黏性,推动漫画产业数字化发展。
|
1月前
|
移动开发 数据可视化 安全
数字孪生云渲染终极指南(一):什么是实时云渲染?
将三维可视化程序上云可以有效解决上述问题。通常可采用WebGL、HTML5、threejs、虚拟化、云桌面,以及云渲染等各类技术方案,实现客户端与服务端的分离,从一定程度上降低客户端硬件配置要求,提高程序兼容性。实时云渲染技术是目前最先进的云化技术之一,也是数字孪生三维可视化场景商业模式破局的关键。
290 155
数字孪生云渲染终极指南(一):什么是实时云渲染?
|
1月前
|
运维 监控 数据可视化
别让运维跪着查日志了!给老板看的“业务观测”大盘才是真香
深夜告警、业务暴跌、全员背锅?一次支付故障暴露传统监控盲区。我们通过业务观测,将技术指标转化为老板听得懂的“人话”,实现从被动救火到主动洞察的跨越。让技术团队不再跪着查日志,而是站着驱动业务增长。
别让运维跪着查日志了!给老板看的“业务观测”大盘才是真香
|
26天前
|
小程序 JavaScript 关系型数据库
基于微信小程序的民宿预定系统
本项目设计并实现基于微信小程序的民宿预订管理系统,结合MySQL、Vue、Django等技术,整合民宿资源,优化预订流程,提升用户与经营者效率,推动民宿行业信息化发展。
|
19天前
|
人工智能 运维 监控
从代码到生产推理服务:DevPod 全流程部署 DeepSeek-OCR 模型实战指南
DevPod重塑AI开发范式,实现从云端开发、调试到生产部署的全流程闭环。依托预置环境与GPU资源,一键完成模型服务化,打通AI落地“最后一公里”,让开发者专注业务创新。
|
18天前
|
人工智能 运维 Cloud Native
一起聊聊大规模 AI Agent 部署与运维实战
诚挚地邀请您参加将于 11 月 28 日(周五)下午,在北京阿里中心举办的 【企业 AI 原生应用架构升级】主题研讨会。
|
2月前
|
Java
Java基础知识总结(超详细整理)
本文系统总结Java基础知识,涵盖语法、面向对象(类与对象、封装、继承、多态)、常用类(String、包装类、集合框架)及异常处理等核心内容,结合代码示例深入浅出,助你扎实掌握Java编程基础。
167 1
|
1月前
|
存储 算法 Java
深入理解JVM:内存管理与垃圾回收机制探索
JVM是Java程序的运行核心,实现跨平台、自动内存管理与高效执行。其架构包括类加载、运行时数据区、执行引擎等模块。内存模型历经演变,JDK 8起以元空间替代永久代,优化GC性能。JVM通过分代回收机制,结合标记清除、复制、整理等算法,管理对象生命周期,提升系统稳定性与性能。
|
22天前
|
区块链 数据安全/隐私保护 计算机视觉
FSViewer看图软件安装教程!可以批量格式转换、批量重命名、批量压缩的看图软件(还有其他几款看图软件可以看看)
FSViewer是一款功能强大的免费看图软件,支持BMP、JPG、PNG、GIF、RAW等主流图片格式,具备快速浏览、批量格式转换、重命名、压缩及图片编辑功能,操作简便,适合日常图像处理需求。
217 72