分享一些Java面向对象的实际案例

简介: Java面向对象案例通过校园管理和电商系统,展现封装、继承、多态的协同:封装保护数据,继承复用代码,多态实现灵活扩展,贴近实际应用,体现OOP核心思想。(238字)

Java面向对象的实际案例能很好体现封装、继承、多态的结合使用,以下是几个贴近生活的场景案例:

案例1:校园人员管理系统(封装+继承+多态)

场景:学校有学生、老师两类人员,需统一管理基本信息,同时区分各自特性(学生有学号、老师有工号)。

// 1. 父类:封装共性属性和方法
class Person {
   
    private String name; // 封装姓名(私有属性)
    private int age;

    // 构造器初始化
    public Person(String name, int age) {
   
        this.name = name;
        this.age = age;
    }

    // getter/setter暴露接口(封装的体现)
    public String getName() {
    return name; }
    public int getAge() {
    return age; }

    // 共性方法:展示基本信息
    public void showInfo() {
   
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}

// 2. 子类1:学生(继承+扩展)
class Student extends Person {
   
    private String studentId; // 学生专属属性

    public Student(String name, int age, String studentId) {
   
        super(name, age); // 继承父类构造器
        this.studentId = studentId;
    }

    // 重写父类方法(多态基础)
    @Override
    public void showInfo() {
   
        super.showInfo(); // 复用父类逻辑
        System.out.println("身份:学生,学号:" + studentId);
    }

    // 学生专属方法
    public void study() {
   
        System.out.println(getName() + "正在学习");
    }
}

// 3. 子类2:老师(继承+扩展)
class Teacher extends Person {
   
    private String teacherId; // 老师专属属性

    public Teacher(String name, int age, String teacherId) {
   
        super(name, age);
        this.teacherId = teacherId;
    }

    // 重写父类方法(多态基础)
    @Override
    public void showInfo() {
   
        super.showInfo();
        System.out.println("身份:老师,工号:" + teacherId);
    }

    // 老师专属方法
    public void teach() {
   
        System.out.println(getName() + "正在讲课");
    }
}

// 4. 测试类(多态的实际应用)
public class SchoolSystem {
   
    public static void main(String[] args) {
   
        // 父类引用指向子类对象(多态)
        Person s = new Student("张三", 18, "2023001");
        Person t = new Teacher("李四", 35, "T001");

        // 调用同一方法,表现不同行为(多态特性)
        s.showInfo(); 
        // 输出:姓名:张三,年龄:18;身份:学生,学号:2023001
        t.showInfo(); 
        // 输出:姓名:李四,年龄:35;身份:老师,工号:T001

        // 子类专属方法需强转调用
        ((Student)s).study(); // 输出:张三正在学习
        ((Teacher)t).teach(); // 输出:李四正在讲课
    }
}

案例2:电商商品订单系统(接口+多态)

场景:订单可包含多种商品(手机、图书),需统一计算总价,每种商品有自己的计价逻辑。

// 1. 接口:定义商品的统一行为
interface Product {
   
    double getPrice(); // 计算价格
    String getName();  // 获取名称
}

// 2. 实现类1:手机(封装属性和计价逻辑)
class Phone implements Product {
   
    private String brand;
    private double price;
    private int storage; // 存储容量(影响价格)

    public Phone(String brand, double price, int storage) {
   
        this.brand = brand;
        this.price = price + (storage * 100); // 存储越大价格越高
    }

    @Override
    public double getPrice() {
    return price; }

    @Override
    public String getName() {
    return brand + "手机(" + storage + "G)"; }
}

// 3. 实现类2:图书(封装属性和计价逻辑)
class Book implements Product {
   
    private String title;
    private double price;
    private double discount; // 折扣(影响价格)

    public Book(String title, double price, double discount) {
   
        this.title = title;
        this.price = price * discount; // 折扣后价格
    }

    @Override
    public double getPrice() {
    return price; }

    @Override
    public String getName() {
    return title; }
}

// 4. 订单类(使用多态统一管理商品)
class Order {
   
    private Product[] products; // 订单中的商品(父类数组存子类对象)

    public Order(Product[] products) {
   
        this.products = products;
    }

    // 计算订单总价(多态:无需关心具体商品类型)
    public double calculateTotal() {
   
        double total = 0;
        for (Product p : products) {
   
            total += p.getPrice();
        }
        return total;
    }

    // 展示订单商品
    public void showProducts() {
   
        System.out.println("订单商品:");
        for (Product p : products) {
   
            System.out.println(p.getName() + ",单价:" + p.getPrice());
        }
    }
}

// 5. 测试类
public class OrderSystem {
   
    public static void main(String[] args) {
   
        // 创建不同商品(多态:统一用Product类型)
        Product p1 = new Phone("小米", 2999, 256); // 价格=2999+256*100=28599
        Product p2 = new Book("Java编程思想", 108, 0.8); // 价格=108*0.8=86.4

        // 生成订单
        Order order = new Order(new Product[]{
   p1, p2});
        order.showProducts();
        System.out.println("订单总价:" + order.calculateTotal()); // 输出:28685.4
    }
}

这些案例中,封装保证了数据安全(如私有属性通过方法访问),继承减少了代码重复(如学生/老师复用人员信息),多态实现了灵活扩展(如同一订单处理不同商品),完全贴合面向对象的设计思想。

相关文章
|
Java 开发者
21组案例详解Java实战 | 面向对象编程
如何将所学知识转化成切实可行的代码?编写简单Java类、实现数组排序和转置功能、将数据表转化为Java内容、如何继承其他类或实现各种接口、怎样创造神奇的链表结构?本合辑将结合实际场景,由多组案例带你一一完成。
13105 0
21组案例详解Java实战 |  面向对象编程
|
12月前
|
传感器 算法 安全
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
393 4
|
JavaScript 前端开发 Java
垃圾分类管理系统基于 Spring Boot Vue 3 微服务架构实操指南
本文介绍了基于Java技术的垃圾分类管理系统开发方案与实施案例。系统采用前后端分离架构,后端使用Spring Boot框架搭配MySQL数据库,前端可选择Vue.js或Java Swing实现。核心功能模块包括垃圾分类查询、科普教育、回收预约等。文中提供了两个典型应用案例:彭湖花园小区使用的Swing桌面系统和基于Spring Boot+Vue的城市管理系统,分别满足不同场景需求。最新技术方案升级为微服务架构,整合Spring Cloud、Redis、Elasticsearch等技术,并采用Docker容器
747 1
|
10月前
Snipaste 截图工具安装使用教程:桌面 "贴" 图神器,高效截图不费力
Snipaste 不只是截图工具,更是让截图“活”起来的效率神器!支持快速截图(F1)、贴图置顶(F3)、缩放旋转、透明穿透等灵活操作,还可将文字颜色转为图片窗口。轻巧强大,提升办公效率必备!
1655 8
Snipaste 截图工具安装使用教程:桌面 "贴" 图神器,高效截图不费力
|
Kubernetes Cloud Native 开发者
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
alibaba-load-balancer-controller v1.2.0:开启云原生网关开源新篇章!敬请探索!
461 61
|
前端开发 Java 数据库连接
Java 编程进阶实操之工具集整合应用指南
本文聚焦Java编程进阶实操,涵盖并发编程、性能优化及数据库操作优化等核心知识点,并结合Hutool、Postman、Git等实用工具,提供从理论到实践的学习路径。通过小型图书管理系统实战项目,详细解析技术选型与实现步骤,助力开发者掌握Spring Boot、MyBatis等框架应用。同时展望Java新特性与技术趋势,为职业发展奠定基础。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
307 1
|
人工智能 安全 API
OpenHands:能自主检索外部知识的 AI 编程工具,自动执行命令、网页浏览和生成代码等操作
OpenHands 是一款基于 AI 的编程工具,支持多智能体协作,能够自动生成代码、执行命令、浏览网页等,显著提升开发效率。
3229 26
OpenHands:能自主检索外部知识的 AI 编程工具,自动执行命令、网页浏览和生成代码等操作
|
Java
Java实例详解
Java实例是通过类创建的对象,其核心在于将抽象的类定义转化为具体的实体。类作为对象的模板定义了属性和行为,而实例则是这些定义的具体实现。通过`new`关键字可以创建实例,并利用点运算符访问其属性和方法。实例拥有自己的生命周期,从创建到使用直至被垃圾回收机制自动清理。此外,实例变量和静态变量的区别在于前者属于单个实例,后者则为所有实例共享。理解Java实例的概念及其管理对编程至关重要。
875 15
|
机器学习/深度学习 自然语言处理 搜索推荐
1024——通义·灵码的功能以应用以及实践案例测评
本文档介绍了阿里巴巴旗下的通义·灵码大模型产品,涵盖其核心功能如文本生成、语义理解、情感分析、多模态处理等,并展示了在智能客服、金融智能投顾、电商推荐系统等多个领域的应用实例。通过具体代码示例,演示了如何调用通义·灵码的API实现自动回复、投资建议、新闻摘要生成等功能。最后,通过实际案例解析,评估了通义·灵码的新功能及其优化建议,包括安全性改进和代码优化策略。
2340 0
1024——通义·灵码的功能以应用以及实践案例测评