您提到课程不同但相似?如果类足够相似以至于您想尝试在类上调用相同的方法,您可能需要考虑使用抽象类来概括类:这比“实例”和种姓解决方案要好得多。您也可以使用接口,但如果它们以相同的方式工作,抽象类允许您实际实现 changeX() 和 changeY()。例如,如果您想对其中任何一个对象调用 changeX(int x) 或 changeY(int y) ,无论它们是对象Way
还是Pavement
对象,您可能需要执行以下操作:
public abstract class Changeable
{
public void changeX(int x) {
this.x = x;
}
public void changeY(int y) {
this.y = y;
}
protected int x;
protected int y;
}
public Class Pavement extends Changeable{ ... }
public Class Way extends Changeable{ ... }
此时您可以创建一个接口数组并在其中插入对象,如下所示:
List<Changeable> paths = new ArrayList<Changeable>();
paths.add(new Way());
paths.add(new Pavement());
Changeable path = paths.get(0);
path.changeX(5);
path.changeY(7);