如何将两个 Java 类绑定(bind)在一起?
我正在编写一个 3D opengl 程序,其中有几个不同的类。我知道如何将类绑定(bind)到主类,但我无法将两个单独的类绑定(bind)在一起。我有一个地形类,其中包含一些有关地形的数据的列表。然后我需要另一个名为Figure 的类中的数据,该类不是主类。我尝试将这些类绑定(bind)在一起,如下所示:
在地形类中我有:
Figure fig;
public void bindClasses(Figure fg) {
fig = fg;
}
然后在Figure类中我有:
Terrain ter;
public void bindTerrain(Terrain tr) {
ter = tr;
}
然后在这两个类中我都调用这些函数。这不应该绑定(bind)它们和它们的变量吗?至少这就是我将我的类与主类绑定(bind)的方式。
最佳答案
首先从术语开始。 类是一个蓝图,它告诉您如何实例化对象 - 当您编写new Figure()
时,您就创建了一个实例,类图形
的一个对象(通常您有一个类的多个对象>)。因此,当您在上面“绑定(bind)”时,您实际上并不是在绑定(bind)类,而是在绑定(bind)对象。
上面的代码没问题。按照惯例,您经常使用setter编写此类内容,没有必要这样调用它们,但一个非常常见的模式是:
public class Terrain {
Figure fig
public void setFigure(Figure fig) {
this.fig = fig;
}
}
public class Figure {
Terrain ter
public void setTerrain(Terrain ter) {
this.ter = ter;
}
}
要将两者关联在一起,您可以在主类中执行此操作,如您所见,这几乎与您已经拥有的完全一样,只需使用常规名称即可。
public void init() {
Terrain ter = new Terrain(); // create object of class Terrain
Figure fig = new Figure(); // create object of class Figure
ter.setFigure(fig);
fig.setTerrain(ter);
}
例如,如果两个对象之间存在关系,则如果没有地形来放置图形,则无法创建图形。这将使地形几乎“拥有”图形。您可以使用图中的构造函数来指示这一点。
public class Figure {
Terrain ter
// constructor requires an instance of Terrain,
// since the figure must always be placed in a terrain
public Figure(Terrain ter) {
this.ter = ter;
// let terrain know this is the main figure.
ter.setFigure(this);
}
}
现在您的初始化代码将改为:
public void init() {
Terrain ter = new Terrain(); // create object of class Terrain
Figure fig = new Figure(ter); // create object of class Figure in the terrain
// no setters needed, since figure constructor sets up
// the relationship.
}
关于java - java中如何绑定(bind)两个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331697/