用java语言写某公司的人员分为员工和经理两种,但经理也属于员工中的一种,公司的人员都有自己的姓名和地址,员工和经理都有自己的工号、工资、工龄等属性,但经理不同员工的是,经理有自己在公司对应的级别。假设每次给员工涨工资一次能涨10,经理能涨20%。本案例要求利用多态实现给员工和经理涨工资。
时间: 2023-10-25 15:33:36 浏览: 73
好的,这是一个简单的面向对象的题目,可以通过继承和多态来实现。以下是一个可能的实现:
首先,我们定义一个`Person`类,表示公司人员,这个类包含`name`和`address`属性:
```java
public class Person {
private String name;
private String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
}
```
然后,我们定义一个`Employee`类,继承自`Person`类,表示员工,这个类包含`id`、`salary`和`years`属性,以及一个`raiseSalary`方法用于涨工资:
```java
public class Employee extends Person {
private int id;
private double salary;
private int years;
public Employee(String name, String address, int id, double salary, int years) {
super(name, address);
this.id = id;
this.salary = salary;
this.years = years;
}
public int getId() {
return id;
}
public double getSalary() {
return salary;
}
public int getYears() {
return years;
}
public void raiseSalary() {
salary += 10;
}
}
```
最后,我们定义一个`Manager`类,继承自`Employee`类,表示经理,这个类加入`level`属性,以及重写`raiseSalary`方法:
```java
public class Manager extends Employee {
private String level;
public Manager(String name, String address, int id, double salary, int years, String level) {
super(name, address, id, salary, years);
this.level = level;
}
public String getLevel() {
return level;
}
@Override
public void raiseSalary() {
salary *= 1.2;
}
}
```
现在,我们可以利用多态来对员工和经理进行涨工资操作了:
```java
public class Main {
public static void main(String[] args) {
// 创建员工和经理对象
Employee employee = new Employee("Tom", "Beijing", 1001, 5000, 3);
Manager manager = new Manager("Jerry", "Shanghai", 1002, 8000, 5, "Level 1");
// 执行涨工资操作
employee.raiseSalary();
manager.raiseSalary();
// 输出涨工资后的薪资
System.out.println(employee.getSalary()); // 5010.0
System.out.println(manager.getSalary()); // 9600.0
}
}
```
以上就是一个可能的实现,利用面向对象的思想,我们可以方便地对不同类型的公司人员进行不同的操作。