分享一些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
    }
}

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

相关文章
|
开发框架 JavaScript 前端开发
Vue低代码 -- 走进低代码
Vue低代码 -- 走进低代码
595 0
|
3月前
|
机器学习/深度学习 数据库 数据安全/隐私保护
服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
CPU与GPU在服务器中各司其职:CPU擅长处理复杂逻辑,如订单判断、网页请求;GPU专注批量并行计算,如图像处理、深度学习。二者协同工作,能大幅提升服务器效率,满足多样化计算需求。
1495 39
|
26天前
|
XML Java 开发者
springboot自动装配的基本原理
Spring Boot自动装配基于“约定大于配置”理念,通过@SpringBootApplication、@EnableAutoConfiguration与spring.factories机制,结合条件注解实现智能Bean加载。它根据依赖自动配置组件,大幅简化开发。其核心是AutoConfigurationImportSelector筛选符合条件的配置类,实现按需装配。开发者可专注业务,享受“开箱即用”的便捷体验。(238字)
|
6月前
|
人工智能 JSON Java
2025 年必知的 Java 高效开发实战:10 个让代码质量飙升的黄金法则详解
《Java高效开发实战:10个让代码质量飙升的黄金法则(2025版)》聚焦现代Java开发中的关键技术实践,涵盖日志优化、响应式编程、虚拟线程、资源管理、矢量API、防御编程、空值处理、领域驱动设计、WebFlux集成及AI辅助开发等内容。通过结构化日志、Reactor并行流、Project Loom虚拟线程等技术,显著提升性能与可维护性。结合Spring WebFlux和GitHub Copilot,助力构建高性能、智能化的应用系统。本书内容已在多家头部企业验证,适合开发者逐步落地,优化代码质量与开发效率。
267 2
|
6月前
|
设计模式 Java API
Java 高效开发实战之让代码质量飙升的 10 个黄金法则技巧
本文分享了10个提升Java代码质量的黄金法则,涵盖日志优化、集合操作、异常处理、资源管理等方面。通过参数化日志减少性能开销,利用Stream与Guava简化集合操作,采用CompletableFuture优化并发处理,运用Optional避免空指针异常等实战技巧,结合具体案例解析,助你写出高效、高质量的Java代码。
249 1
|
7月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
7月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
268 6
|
6月前
|
前端开发 Java 微服务
2025 版 Java 学习路线图之技术方案与实操指南详解
这是一份详尽的Java学习路线图,涵盖从入门到精通的全流程。基础阶段包括环境搭建、语法基础与面向对象编程;进阶阶段深入数据结构、算法、多线程及JVM原理;框架阶段学习Spring、MyBatis等工具;数据库阶段掌握SQL与NoSQL技术;前端阶段了解HTML、CSS及JavaScript框架;分布式与微服务阶段探讨容器化、服务注册与发现;最后通过项目实战提升性能优化与代码规范能力。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
524 7
|
存储 人工智能 自然语言处理
AI经营|多Agent择优生成商品标题
商品标题中关键词的好坏是商品能否被主搜检索到的关键因素,使用大模型自动优化标题成为【AI经营】中的核心能力之一,本文讲述大模型如何帮助商家优化商品素材,提升商品竞争力。
1345 62
AI经营|多Agent择优生成商品标题