/* * 定义 Person 类和 Student 类,分别实现定义各自基本属性的功能。 */ // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码 /********* Begin *********/ // 声明一个名为Person的类,里面有name与age两个属性,分别为String和int型,并声明一个含有两个参数的构造方法 class Person { // 定义属性 public String name; public int age; // 含有两个参数的构造方法 public Person(String name, int age) { this.name = name; this.age = age; } } // 声明Student类继承Person类 class Student extends Person { // 学生特有的属性 public String studentId; public String school; // 构造方法 public Student(String name, int age, String studentId,String school) { super(name, age); // 调用父类构造方法 this.studentId = studentId; this.school=scool; } } /********* End ******* */ // 声明一个名为Student的类,此类继承自Person类,添加一个属性school,字符串类型 // 在子类的有参构造方法中调用父类中有两个参数的构造方法 /********** End **********/仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码
时间: 2025-05-21 11:13:44 浏览: 23
### 正确定义 `Person` 和 `Student` 类
以下是基于引用内容和 Java 编程规范的解决方案,确保构造方法正确调用且无语法错误。
#### 1. 定义 `Person` 类
`Person` 类包含两个基本属性:`name` 和 `age`。为了支持继承关系中的灵活性,提供了多种构造方法以满足不同的初始化需求[^4]。
```java
public class Person {
private String name;
private int age;
// 默认构造方法
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 带参数的构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 和 Setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
#### 2. 定义 `Student` 类
`Student` 继承自 `Person` 并扩展了额外的属性:`studentId` 和 `school`。通过显式的构造方法调用父类构造器来完成对象的初始化[^1][^2]。
```java
public class Student extends Person {
private String studentId;
private String school;
// 默认构造方法
public Student() {
super(); // 调用父类默认构造方法
this.studentId = "N/A";
this.school = "N/A";
System.out.println("创建了一名学生,默认信息已设置。");
}
// 带参数的构造方法
public Student(String name, int age, String studentId, String school) {
super(name, age); // 调用父类带参数的构造方法
this.studentId = studentId;
this.school = school;
System.out.println("创建了一名学生:" + name);
}
// Getter 和 Setter 方法
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
// 打印学生信息的方法
public void printInfo() {
System.out.println("姓名: " + getName());
System.out.println("年龄: " + getAge());
System.out.println("学号: " + studentId);
System.out.println("学校: " + school);
}
}
```
---
### 测试代码示例
以下是一个简单的测试案例,用于验证上述类的功能:
```java
public class Main {
public static void main(String[] args) {
// 使用默认构造方法创建一个学生
Student student1 = new Student();
student1.setName("Alice");
student1.setAge(20);
student1.setStudentId("S001");
student1.setSchool("XYZ University");
// 输出学生信息
student1.printInfo();
// 使用带参数的构造方法创建另一个学生
Student student2 = new Student("Bob", 22, "S002", "ABC College");
student2.printInfo();
}
}
```
---
### 解决方案的关键点说明
1. **继承机制**
子类 `Student` 显式调用了父类 `Person` 的构造方法 (`super`) 来初始化继承而来的属性 `name` 和 `age`[^1]。
2. **多态性和封装性**
提供了丰富的 getter 和 setter 方法以便外部访问受保护的成员变量[^3]。
3. **构造方法重载**
支持不同场景下的对象创建需求,例如仅需部分字段初始化的情况[^4]。
4. **打印功能增强**
添加了专门的 `printInfo()` 方法展示完整的对象状态,便于调试和日志记录[^5]。
---
###
阅读全文
相关推荐

















