Java 子方法如何调用父方法
在Java中,子类可以继承父类的方法和属性,但有时子类需要在继承的方法中添加一些特定的功能或逻辑。这时,我们可以使用子方法调用父方法的方式来实现。本文将介绍如何在Java中使用子方法调用父方法,并给出一个实际问题的解决方案。
实际问题
假设我们有一个旅行社的系统,需要管理旅行团的信息。每个旅行团都有一个团号和一个团名,可以通过一个方法getInfo()
来获取团号和团名的信息。现在,我们希望在子类中实现一个方法getInfoWithPrefix()
,该方法能够在父类的getInfo()
方法的基础上,给团名添加一个前缀,并返回完整的信息。
示例代码
下面是一个简化的示例代码,以说明如何在子方法中调用父方法:
class TravelGroup {
private String groupNumber;
private String groupName;
public TravelGroup(String groupNumber, String groupName) {
this.groupNumber = groupNumber;
this.groupName = groupName;
}
public String getInfo() {
return "团号:" + groupNumber + ",团名:" + groupName;
}
}
class EnhancedTravelGroup extends TravelGroup {
private String prefix;
public EnhancedTravelGroup(String groupNumber, String groupName, String prefix) {
super(groupNumber, groupName);
this.prefix = prefix;
}
public String getInfoWithPrefix() {
return prefix + " " + super.getInfo();
}
}
在上面的代码中,TravelGroup
类是父类,EnhancedTravelGroup
类是子类。子类EnhancedTravelGroup
继承了父类TravelGroup
的方法getInfo()
。在子类中,我们重写了getInfo()
方法,并在其中调用了父类的getInfo()
方法。子类还新增了一个getInfoWithPrefix()
方法,用于在父类返回的信息前添加一个前缀。
解决方案
通过在子类中重写父类的方法,并在子类方法中调用父类方法,可以实现子方法调用父方法的功能。在上面的示例中,EnhancedTravelGroup
类重写了父类的getInfo()
方法,并在其中通过super
关键字调用了父类的同名方法。这样,子类就可以在父类方法的基础上添加额外的功能。
类图
下面是示例代码中的类图,使用mermaid语法表示:
classDiagram
class TravelGroup {
-groupNumber: String
-groupName: String
+TravelGroup(String, String)
+getInfo(): String
}
class EnhancedTravelGroup {
-prefix: String
+EnhancedTravelGroup(String, String, String)
+getInfoWithPrefix(): String
}
TravelGroup <|-- EnhancedTravelGroup
旅行图
下面是示例代码中的旅行图,使用mermaid语法表示:
journey
title 旅行团信息获取
section 获取团信息
TravelGroup.getInfo() --> EnhancedTravelGroup.getInfoWithPrefix()
在上面的旅行图中,我们可以看到通过调用TravelGroup
类的getInfo()
方法,能够获取团的信息。而EnhancedTravelGroup
类中的getInfoWithPrefix()
方法是在父类方法的基础上添加了前缀,并返回完整的信息。
结论
通过子方法调用父方法的方式,我们可以实现在子类中对父类方法进行扩展和修改的需求。通过super
关键字,子类可以调用父类的同名方法,并在子类方法中添加额外的功能。这种方式可以更好地复用已有的代码,提高代码的可维护性和扩展性。在实际开发中,我们可以根据具体的需求,在子类中灵活地调用父类的方法,实现所需的功能。