diff --git a/w3/Employee.java b/w3/Employee.java new file mode 100644 index 0000000..de2dd49 --- /dev/null +++ b/w3/Employee.java @@ -0,0 +1,101 @@ +public class Employee { + + // 静态变量:公司名称 + private static String companyName = "ABC科技有限公司"; + + // 最低工资标准 + private static final double MIN_SALARY = 2000.0; + + // 属性:工号、姓名、部门、工资 + private String id; + private String name; + private String department; + private double salary; + + // 全参构造方法(同时为 companyName 赋值) + public Employee(String id, String name, String department, double salary) { + this.id = id; + this.name = name; + this.department = department; + // 使用 setSalary 确保工资合法 + setSalary(salary); + } + + // ==================== Getter & Setter ==================== + + public static String getCompanyName() { + return companyName; + } + + public static void setCompanyName(String companyName) { + Employee.companyName = companyName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public double getSalary() { + return salary; + } + + /** + * 设置工资,工资必须大于等于最低工资标准(2000) + */ + public void setSalary(double salary) { + if (salary >= MIN_SALARY) { + this.salary = salary; + } else { + System.out.println("警告:工资不能低于最低工资标准 " + MIN_SALARY + + " 元,已自动设置为最低工资标准。"); + this.salary = MIN_SALARY; + } + } + + /** + * 按百分比涨工资 + * percent 为 5 表示增加 5% + * 增加后仍不低于最低工资 + */ + public void raiseSalary(double percent) { + double newSalary = this.salary * (1 + percent / 100.0); + if (newSalary < MIN_SALARY) { + newSalary = MIN_SALARY; + } + this.salary = newSalary; + System.out.printf("涨薪 %.1f%%,%s 的新工资为:%.2f 元%n", percent, this.name, this.salary); + } + + /** + * 输出员工信息 + */ + public void printInfo() { + System.out.println("=============================="); + System.out.println("公司:" + companyName); + System.out.println("工号:" + id); + System.out.println("姓名:" + name); + System.out.println("部门:" + department); + System.out.printf("工资:%.2f 元%n", salary); + System.out.println("=============================="); + } +} diff --git a/w3/TestEmployee.java b/w3/TestEmployee.java new file mode 100644 index 0000000..2fb4c6e --- /dev/null +++ b/w3/TestEmployee.java @@ -0,0 +1,49 @@ +public class TestEmployee { + + public static void main(String[] args) { + + System.out.println("===== 创建员工对象 =====\n"); + + // 创建第一个员工 + Employee emp1 = new Employee("E001", "张三", "研发部", 8000); + emp1.printInfo(); + + // 创建第二个员工(故意传入低于最低工资的值,演示 setSalary 校验) + Employee emp2 = new Employee("E002", "李四", "市场部", 1500); + emp2.printInfo(); + + System.out.println("\n===== 演示属性修改(setter)=====\n"); + + // 修改 emp1 的部门和工资 + emp1.setDepartment("产品部"); + emp1.setSalary(9500); + System.out.println("修改后 emp1 信息:"); + emp1.printInfo(); + + // 用 setSalary 尝试将 emp2 工资设置为低于最低工资 + System.out.println("尝试将 emp2 工资设置为 800:"); + emp2.setSalary(800); + emp2.printInfo(); + + System.out.println("\n===== 演示涨薪(raiseSalary)=====\n"); + + // emp1 涨薪 5% + emp1.raiseSalary(5); + // emp2 涨薪 10% + emp2.raiseSalary(10); + + System.out.println("\n===== 涨薪后完整信息 =====\n"); + emp1.printInfo(); + emp2.printInfo(); + + System.out.println("\n===== 演示静态变量 companyName =====\n"); + + System.out.println("当前公司名称:" + Employee.getCompanyName()); + Employee.setCompanyName("XYZ集团"); + System.out.println("修改后公司名称:" + Employee.getCompanyName()); + + // 静态变量是所有对象共享的,两个对象的公司名都变了 + emp1.printInfo(); + emp2.printInfo(); + } +}