以下是实现该功能的代码,包含 `Person` 类、`Graduate` 类以及测试类: ```java // 定义Person类 class Person { private String name; private int birthYear; // 有参构造方法 public Person(String name, int birthYear) { this.name = name; this.birthYear = birthYear; } // 获取姓名 public String getName() { return name; } // 获取出生年份 public int getBirthYear() { return birthYear; } // 计算年龄 public int calculateAge(int currentYear) { return currentYear - birthYear; } } // 定义Graduate类,继承自Person class Graduate extends Person { private double gpa; private int graduateYear; // 构造方法,通过super调用父类构造方法 public Graduate(String name, int birthYear, int graduateYear, double gpa) { super(name, birthYear); this.gpa = gpa; this.graduateYear = graduateYear; } // 重写toString方法 @Override public String toString() { int age = calculateAge(graduateYear); // 计算毕业时的年龄 return "姓名:" + getName() + "\n" + "年龄:" + age + "\n" + "毕业年份:" + graduateYear + "\n" + "成绩:" + gpa; } } // 测试类 public class TestGraduate { public static void main(String[] args) { // 输入样例:tom 2002 2023 90 String input = "tom 2002 2023 90"; String[] data = input.split(" "); // 提取输入数据 String name = data[0]; int birthYear = Integer.parseInt(data[1]); int graduateYear = Integer.parseInt(data[2]); double gpa = Double.parseDouble(data[3]); // 创建Graduate对象 Graduate graduate = new Graduate(name, birthYear, graduateYear, gpa); // 输出毕业生信息 System.out.println(graduate.toString()); } } ``` 运行上述代码后,会输出如下结果: ``` 姓名:tom 年龄:21 毕业年份:2023 成绩:90.0 ``` 此代码实现了题目要求的功能,并且结构清晰,符合面向对象编程的原则。 [2025-04-17 14:59:23 | AI问答 | 542点数解答]