如何从上面的class中调用一个方法?

How to call a method from the class above?

如何从子class中调用超class的方法?

这是我尝试做的一个例子,不是真实的class(为简单起见)

public class Road {
    private Lane lane1 = new Lane();
    private Lane lane2 = new Lane();
    private int activeLane = 1;

    public void switchLanes(){
        if(activeLane == 1){
            activeLane = 2;
            lane2.go();
        }else if(activeLane == 2){
            activeLane = 1;
            lane1.go();
        }

    }
}

public class Lane {
    public void go(){
        driveLane();

        // here I want to call the method switchlane in the Road class to create a "loop"
    }
}

实现此目标的最佳方法是什么?
我知道可以在 Road class 中使用一个循环来完成它,但这会在以后产生问题。

首先 Lane 不是 Road 的子 class。它不扩展 Road class。如果你仍然想调用 switchLane 你可以创建一个 Road 的实例,然后调用它的方法

Road r = new Road();
r.switchLanes();

您还可以保留对 Road-parent 的引用(我猜 Road class 与 Lane class):

public class Lane {
    private Road roadParent;
    public void go(){
        driveLane();
        roadParent.switchLanes();
    }
    public void setRoadParent(Road roadParent) {
        this.roadParent = roadParent;
    }
}

为了从 Lane class 调用 Road class 的(非静态)方法,您必须引用Road.

让我们在Lane构造函数中获取这样一个引用:

public class Lane {
    private Road road;

    public Lane(Road road) {
        this.road = road;
    }

    public void go(){
        // Here you can call methods of Road
        road.switchLanes();
    }
}

现在您必须在 Road class:

中进行一些更改
public class Road {
    private Lane lane1 = new Lane(this);
    private Lane lane2 = new Lane(this);

    // Other things
}