首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于面向对象的三大特征的实际案例

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

原创
作者头像
啦啦啦191
发布2025-11-11 14:45:59
发布2025-11-11 14:45:59
1010
举报
文章被收录于专栏:Java开发Java开发

用生活场景+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
    }
}

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

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

代码案例

代码语言:java
复制
// 父类(提取共性)
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(); // 子类专属:汤姆在抓老鼠
    }
}

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

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

代码案例

代码语言:java
复制
// 父类/接口(定义统一行为)
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元,已扣除余额宝金额
    }
}

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、封装:实体类的数据安全控制
  • 二、继承:复用父类功能,扩展子类特性
  • 三、多态:同一行为,不同实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档