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关键字,子类可以调用父类的同名方法,并在子类方法中添加额外的功能。这种方式可以更好地复用已有的代码,提高代码的可维护性和扩展性。在实际开发中,我们可以根据具体的需求,在子类中灵活地调用父类的方法,实现所需的功能。