欢迎访问宙启技术站
智能推送

Java函数的多态性应用实例

发布时间:2023-06-25 23:23:00

Java函数的多态性是Java语言中的一个非常重要的概念,通过它可以实现代码的简洁、灵活、易扩展等优点,提高代码的重用性和可读性。以下是一个Java函数的多态性应用实例。

在实现一个学生类和教师类的程序时,我们需要统计学生和教师的总人数,并计算它们的平均年龄和平均工资。这里我们可以使用Java函数的多态性来实现代码的简洁和灵活。

首先,我们定义一个Person类,表示用户的基本信息(姓名和年龄):

public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String getName() {
    return this.name;
  }

  public int getAge() {
    return this.age;
  }
}

然后,我们定义一个Student类和一个Teacher类,都继承自Person类,并分别添加学号和工资属性:

public class Student extends Person {
  private String id;

  public Student(String name, int age, String id) {
    super(name, age);
    this.id = id;
  }

  public String getId() {
    return this.id;
  }
}

public class Teacher extends Person {
  private double salary;

  public Teacher(String name, int age, double salary) {
    super(name, age);
    this.salary = salary;
  }

  public double getSalary() {
    return this.salary;
  }
}

接着,我们定义一个PersonArray类,它包含一个属性为persons的Person数组,可以添加学生和教师,并实现统计总人数、计算平均年龄和平均工资的方法。其中,我们使用Java函数的多态性,通过参数类型不同实现方法的重载:

public class PersonArray {
  private Person[] persons;
  private int count;

  public PersonArray(int size) {
    this.persons = new Person[size];
    this.count = 0;
  }

  public void add(Person person) {
    this.persons[this.count++] = person;
  }

  public int getTotalCount() {
    return this.count;
  }

  public double getAverageAge() {
    int totalAge = 0;
    for (int i = 0; i < this.count; i++) {
      totalAge += this.persons[i].getAge();
    }
    return (double)totalAge / this.count;
  }

  public double getAverageSalary() {
    double totalSalary = 0.0;
    int teacherCount = 0;
    for (int i = 0; i < this.count; i++) {
      if (this.persons[i] instanceof Teacher) {
        totalSalary += ((Teacher)this.persons[i]).getSalary();
        teacherCount++;
      }
    }
    return totalSalary / teacherCount;
  }
}

最后,我们可以使用以下代码来测试上述类的功能:

public class Main {
  public static void main(String[] args) {
    PersonArray personArray = new PersonArray(10);
    personArray.add(new Student("Jack", 18, "1001"));
    personArray.add(new Teacher("Tom", 30, 5000.0));
    personArray.add(new Student("Lucy", 17, "1002"));
    personArray.add(new Teacher("David", 38, 8000.0));
    personArray.add(new Student("Bob", 19, "1003"));

    System.out.println("Total count: " + personArray.getTotalCount());
    System.out.println("Average age: " + personArray.getAverageAge());
    System.out.println("Average salary: " + personArray.getAverageSalary());
  }
}

运行结果如下:

Total count: 5
Average age: 20.4
Average salary: 6500.0

这说明,我们成功地使用Java函数的多态性实现了一个统计学生和教师总人数、计算平均年龄和平均工资的程序。