设计一个Java实验,编程演示子类构造方法与父类构造方法之间的关系。 要求: 演示子类如何调用父类的构造方法(提示:有多种情况)。 演示构造方法的调用顺序。
时间: 2024-09-23 18:10:29 浏览: 45
设计一个Java实验,我们首先创建一个简单的父类`ParentClass`,它有一个默认的构造方法。然后创建一个子类`ChildClass`,这个子类会演示几种调用父类构造方法的情况。
```java
// 父类 ParentClass
public class ParentClass {
private String parentField;
// 默认构造方法
public ParentClass() {
parentField = "Default Parent";
}
// 定义一个带参数的构造方法,用于演示子类通过super关键字调用
public ParentClass(String parentValue) {
this.parentField = parentValue;
}
// 构造方法
public void printInfo() {
System.out.println("Parent Field: " + parentField);
}
}
// 子类 ChildClass 继承自 ParentClass,并演示多种构造方法调用
public class ChildClass extends ParentClass {
private String childField;
// 使用 super 关键字调用默认的父类构造方法
public ChildClass() {
super(); // 调用父类的无参构造
childField = "Default Child";
}
// 使用 super 关键字调用带参数的父类构造方法
public ChildClass(String parentValue, String childValue) {
super(parentValue); // 调用父类的带参构造并传递值
childField = childValue;
}
// 自己的构造方法
public ChildClass(String childValue) {
parentField = "Constructed with ChildValue";
childField = childValue;
}
// 主函数来运行示例
public static void main(String[] args) {
// 创建子类实例并打印结果
ChildClass defaultInstance = new ChildClass();
defaultInstance.printInfo();
defaultInstance.printChildFields();
ChildClass valueInstance = new ChildClass("Passed Value", "Child Specific");
valueInstance.printInfo();
valueInstance.printChildFields();
ChildClass childValueInstance = new ChildClass("Child Constructor Value");
childValueInstance.printInfo();
childValueInstance.printChildFields();
}
// 打印子类特有的字段
public void printChildFields() {
System.out.println("Child Field: " + childField);
}
}
```
在这个实验中,我们可以看到:
1. 当直接创建子类实例时,会隐式地调用父类的无参构造方法。
2. 在子类的构造方法中显式使用`super()`可以指定调用父类的特定构造方法。
3. 构造方法的调用顺序是从子类到父类,如果有多个`super()`调用,它们按照出现在构造方法中的顺序执行。
阅读全文