当前位置: 首页 > news >正文

案例:员工薪资管理系统(核心:抽象类 + 继承 + 多态 + static)

需求

1. 定义抽象类`Employee`,包含**final 属性工号**、姓名、私有静态属性`公司名称`、静态方法统一修改公司名称;

2. 抽象方法`calculateSalary()`计算薪资,子类必须实现;

3. 实现两个子类:`FullTimeEmployee`(全职员工:固定月薪)、`PartTimeEmployee`(兼职员工:时薪 × 工作时长);

4. 利用多态遍历员工数组,统一打印员工信息和薪资;

5. 静态属性全局生效,所有员工共享公司名称。

**打印结果:**

公司:互联网科技公司 | 工号:1001 | 姓名:张三 | 薪资:8000.0

公司:互联网科技公司 | 工号:1002 | 姓名:李四 | 薪资:5000.0

代码:

/** * 抽象员工类(抽象类) * 包含:final工号、姓名、静态公司名、抽象薪资方法 */ abstract class Employee { // final 修饰的工号(不可修改) protected final String id; // 姓名 protected String name; // 私有静态属性:公司名称(所有员工共享) private static String companyName; // 构造方法 public Employee(String id, String name) { this.id = id; this.name = name; } // 抽象方法:计算薪资(子类必须实现) public abstract double calculateSalary(); // 静态方法:统一修改公司名称 public static void setCompanyName(String company) { companyName = company; } // 获取公司名称 public static String getCompanyName() { return companyName; } // 获取工号 public String getId() { return id; } // 获取姓名 public String getName() { return name; } } /** * 全职员工:继承抽象类 Employee * 薪资 = 固定月薪 */ class FullTimeEmployee extends Employee { // 全职员工:固定月薪 private double monthlySalary; public FullTimeEmployee(String id, String name, double monthlySalary) { super(id, name); this.monthlySalary = monthlySalary; } // 重写抽象方法:计算薪资 @Override public double calculateSalary() { return monthlySalary; } } /** * 兼职员工:继承抽象类 Employee * 薪资 = 时薪 × 工作时长 */ class PartTimeEmployee extends Employee { // 兼职员工:时薪、工作时长 private double hourlyRate; private int workHours; public PartTimeEmployee(String id, String name, double hourlyRate, int workHours) { super(id, name); this.hourlyRate = hourlyRate; this.workHours = workHours; } // 重写抽象方法:计算薪资 @Override public double calculateSalary() { return hourlyRate * workHours; } } /** * 测试类:多态遍历 + 打印信息 */ public class EmployeeSalarySystem { public static void main(String[] args) { // 静态方法统一设置公司名称 Employee.setCompanyName("互联网科技公司"); // 创建员工数组(多态:父类引用指向子类对象) Employee[] employees = { new FullTimeEmployee("1001", "张三", 8000), new PartTimeEmployee("1002", "李四", 100, 50) }; // 遍历打印员工信息 + 薪资 for (Employee emp : employees) { System.out.println("公司:" + Employee.getCompanyName() + " | 工号:" + emp.getId() + " | 姓名:" + emp.getName() + " | 薪资:" + emp.calculateSalary()); } } }

运行结果

公司:互联网科技公司 | 工号:1001 | 姓名:张三 | 薪资:8000.0

公司:互联网科技公司 | 工号:1002 | 姓名:李四 | 薪资:5000.0

核心抽象知识点

  1. 抽象类Employeeabstract修饰,不能实例化,只做员工模板;
  2. 抽象方法calculateSalary()没有方法体,强制子类必须重写
  3. final 属性:工号一旦赋值不可修改,保证数据安全;
  4. static 静态资源:公司名称属于整个类,所有员工共享,可通过静态方法统一修改;
  5. 多态:使用Employee[]数组存储不同子类对象,统一调用方法,扩展性极强;
  6. 继承:子类继承抽象父类,必须实现所有抽象方法,否则编译报错。
http://www.jsqmd.com/news/614511/

相关文章:

  • OFIRM,去感受宇宙之美的全貌!
  • 【2026年网易春招- 4月2日-第一题- 沙场点兵】(题目+思路+JavaC++Python解析+在线测试)
  • 打印机驱动怎么下载?靠谱渠道推荐,轻松解决安装难题
  • 深度解析MPLS协议:定义、核心原理、标签转发机制与应用场景
  • 深度解析 HTTP/2:核心新特性、优势与改进(面试/考试必背)
  • 基于springboot中华历史故事展播系统_6s872fp0_zl091
  • 从F=ma到U(r,t)=P{Φ(r,t)⊛⊂M,Ctotal(t)}【能识此文者,必为大智也】
  • 新手零门槛!Java+YOLOv11从0到1:100行代码实现猫狗图像分类,一键复制跑通
  • .NET源码生成器基于partial范式开发和nuget打包醋
  • 用AI三步搞定产品原型设计,偷菜摸鱼也能高效完成!
  • 2.2MySQL 在电商全链路中的高频应用场景
  • 基于springboot植物销售管理系统的设计与实现_byn179m2_gk003
  • SDMatte辅助UI/UX设计:从真实界面截图快速提取设计组件库
  • 智能恒温器:挖掘节能潜力,应对高额能源账单
  • 患者姓名、身份证、病历号全字段精准脱敏,不丢业务语义——PHP医疗脱敏工具的5层语义感知架构详解
  • 【2026年网易春招- 4月2日-第二题- 背包排序】(题目+思路+JavaC++Python解析+在线测试)
  • 鸿蒙版微信APP总是收不到提醒?看看这两处设置是否正确
  • 3大技术突破重构翻译质量评估:COMET智能引擎的工业化实践
  • 编程已死,键盘长草!Claude Code之父对谈Kaparthy,全程爆金句
  • Agent Client Protocol 全景解析街
  • 如何在唐山挑选性价比高的二手房步梯房随着城市化进程的加快,越来越多的人选择购买二手房作为自己的居所。特别是在像唐山这样的城市里,由于其地理位置优越、经济发展迅速,二手房市场更是受到了不少购房者的青
  • 峨眉山:财神普贤双道场山,服务国内布局四川等地区,求财求事业福地 - 十大品牌榜
  • 三步搞定B站CC字幕下载与转换:告别手动转录的烦恼
  • Docker 容器中运行 AI CLI 工具:用户隔离与持久化卷实战指南淳
  • 光伏三相并网:集成MPPT与SPWM调制的高效逆变系统
  • PowerToys MeasureTool:让屏幕测量变得如此简单,设计师必备的免费神器
  • Spring Boot 4.0 Agent-Ready 架构实战避坑手册:4类ClassLoading冲突、3种Agent卸载失败场景、1套自动化验证脚本
  • 基于springboot油田土地档案管理系统的设计与实现_u0vz7897
  • 草履虫都能学会的Hadoop高可用的搭建
  • 高糖分水果 - 品牌企业推荐师(官方)