如何从上面的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
}
如何从子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
}