跟着AI学java第4天:面向对象编程巩固

张开发
2026/4/12 17:27:44 15 分钟阅读

分享文章

跟着AI学java第4天:面向对象编程巩固
日期2026-04-02周四学习目标通过实战编码巩固Day3所学的面向对象编程核心概念内化以下技能类设计与对象创建封装原则与实践继承机制与super关键字使用多态实现与动态绑定接口编程与抽象类应用建议时长3-4小时根据个人熟练度调整前置知识已完成Day3学习熟悉类与对象、封装、继承、多态、抽象类与接口等概念。任务一基础任务 - 银行账户类设计需求描述设计一个银行账户类BankAccount实现以下功能封装属性账户编号accountIdString私有户主姓名ownerNameString私有账户余额balancedouble私有构造方法提供两个构造方法无参构造设置默认值和全参构造初始化所有属性公开方法存款deposit(double amount)增加余额需验证金额为正数取款withdraw(double amount)减少余额需验证金额为正数且不超过余额查询余额getBalance()返回当前余额显示账户信息displayAccountInfo()打印账户完整信息业务规则余额不能为负数取款时检查存款/取款金额必须大于0类图示意可选┌─────────────────────┐ │ BankAccount │ ├─────────────────────┤ │ - accountId: String │ │ - ownerName: String │ │ - balance: double │ ├─────────────────────┤ │ BankAccount() │ │ BankAccount(...) │ │ deposit(double) │ │ withdraw(double) │ │ getBalance():double│ │ displayAccountInfo()│ └─────────────────────┘输入输出示例 银行账户操作演示 账户创建张三账号ACC001初始余额1000.0 存款500.0后余额1500.0 取款200.0后余额1300.0 取款2000.0失败余额不足 账户信息 账户编号ACC001 户主姓名张三 账户余额1300.0验收标准类定义完整包含私有属性和公共方法构造方法能正确初始化对象存款、取款方法包含必要的验证逻辑能正确处理边界情况如取款金额超过余额编译运行无错误输出符合预期参考答案设计思路类结构使用private修饰所有属性提供对应的getter/setter可选构造方法无参构造可设置默认值如空字符串和0.0全参构造直接赋值存款方法先验证amount 0然后balance amount取款方法验证amount 0 amount balance然后balance - amount信息显示使用System.out.println格式化输出各属性任务二进阶任务 - 图形继承体系需求描述构建一个图形Shape继承体系体现面向对象三大特性抽象基类创建抽象类Shape属性颜色colorString构造方法初始化颜色抽象方法calculateArea()计算面积、calculatePerimeter()计算周长具体方法displayInfo()显示图形基本信息具体子类Circle类圆属性半径radiusdoubleRectangle类矩形属性长度length、宽度widthdouble接口扩展创建接口Drawable抽象方法draw()绘制图形默认方法default void printDrawingInfo()输出绘制提示多态应用编写测试类使用父类引用操作不同子类对象类图示意可选抽象类 ┌──────────┐ │ Shape │ ├──────────┤ │ - color │ ├──────────┤ │ calculateArea() 抽象│ │ calculatePerimeter()抽象│ │ displayInfo() │ └──────────┘ ↑ 继承 ┌──────────┴──────────┐ │ │ ┌───────┐ ┌──────────┐ │ Circle│ │ Rectangle│ ├───────┤ ├──────────┤ │ -radius│ │ -length │ └───────┘ │ -width │ └──────────┘ ↑ 实现 接口 Drawable ├────────────┤ │ draw() │ │ printDrawingInfo()默认│ └────────────┘输入输出示例 图形体系测试 圆形颜色红色半径5.0 面积78.54周长31.42 绘制图形绘制一个红色圆形 矩形颜色蓝色长度4.0宽度3.0 面积12.0周长14.0 绘制图形绘制一个蓝色矩形验收标准抽象类Shape正确定义包含抽象方法和具体方法Circle和Rectangle正确继承Shape实现所有抽象方法Drawable接口被Rectangle实现体现接口多态测试类中能使用Shape数组存储不同图形对象循环调用面积计算体现多态特性Shape s new Circle(...); s.calculateArea();调用子类实现参考答案设计思路抽象类设计Shape用abstract修饰抽象方法用abstract修饰无方法体子类实现Circle中面积公式Math.PI * radius * radius周长2 * Math.PI * radius接口实现Rectangle implements Drawable实现draw()方法多态数组Shape[] shapes {new Circle(...), new Rectangle(...)}默认方法接口中default void printDrawingInfo()可直接使用任务三挑战任务 - 学生选课管理系统片段需求描述设计一个简化的学生选课管理系统片段涉及多个类之间的关联关系核心类Student学生学号、姓名、已选课程列表使用ArrayListCourseCourse课程课程编号、课程名称、学分、授课教师Teacher教师工号、姓名、职称关联关系学生与课程一对多一个学生可选多门课课程与教师多对一多门课可由同一教师授课功能要求学生能选课addCourse(Course course)检查是否重复选课学生能退课removeCourse(String courseId)根据课程编号移除学生能显示已选课程信息displaySelectedCourses()课程能显示授课教师信息displayTeacherInfo()集合应用使用ArrayList管理课程列表使用for-each循环遍历类图示意可选┌──────────┐ ┌──────────┐ ┌──────────┐ │ Student │ │ Course │ │ Teacher │ ├──────────┤ ├──────────┤ ├──────────┤ │ - stuId │ │ - courseId│ │ - teacherId│ │ - name │ │ - name │ │ - name │ │ - courses │─────→│ - credit │ │ - title │ │ (ListCourse)│ │ - teacher│─────→│ │ ├──────────┤ ├──────────┤ └──────────┘ │ addCourse() │ │ displayTeacherInfo()│ │ removeCourse()│ └──────────┘ │ displaySelectedCourses()│ └──────────┘输入输出示例 学生选课系统 学生张三S001选课情况 已选课程 1. Java程序设计C0013学分教师李老师 2. 数据结构C0024学分教师王老师 退课数据结构C002 剩余课程 1. Java程序设计C0013学分教师李老师 课程信息 Java程序设计C001由李老师副教授授课验收标准三个类定义完整属性私有方法公开正确使用ArrayListCourse作为学生类的课程列表addCourse方法能检查重复选课比较课程编号removeCourse方法能根据课程编号查找并移除关联关系正确Course持有Teacher引用Student持有Course列表能创建完整对象链并测试功能参考答案设计思路类关联Course类包含Teacher teacher属性构造方法传入Teacher对象集合管理Student中private ListCourse courses new ArrayList();添加课程addCourse中检查courses.stream().anyMatch(c - c.getCourseId().equals(course.getCourseId()))移除课程使用迭代器或removeIf根据课程编号删除信息显示遍历courses列表调用各课程显示方法

更多文章