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函数的多态性实现了一个统计学生和教师总人数、计算平均年龄和平均工资的程序。
