Java-instanceof

Java-instanceof,java,extends,instanceof,Java,Extends,Instanceof,首先,我做了一个“游戏渲染器” 我的问题是,当我需要绘制当前元素时:我需要知道它是矩形、圆形还是图像等等 我的类(矩形、圆形等)是从图形扩展而来的 public class Rectangle extends Graphic {...} 如果我想画它们,我会查看列表ArrayList 为了避免使用instanceOf,让Graphic实现一个抽象的draw方法。然后,覆盖矩形、圆形等类中的绘制。那你就可以了 for(index = 0;index < graphicObjects.siz

首先,我做了一个“游戏渲染器”

我的问题是,当我需要绘制当前元素时:我需要知道它是矩形、圆形还是图像等等

我的类(矩形、圆形等)是从图形扩展而来的

public class Rectangle extends Graphic {...}
如果我想画它们,我会查看列表
ArrayList


为了避免使用
instanceOf
,让
Graphic
实现一个抽象的
draw
方法。然后,覆盖
矩形
圆形
等类中的
绘制
。那你就可以了

for(index = 0;index < graphicObjects.size();index++){
    currentElement = graphicObjects.get(index);
    currentElement.draw();
}
for(index=0;index
为了避免使用
实例
,让
图形
实现一种抽象的
绘图
方法。然后,覆盖
矩形
圆形
等类中的
绘制
。那你就可以了

for(index = 0;index < graphicObjects.size();index++){
    currentElement = graphicObjects.get(index);
    currentElement.draw();
}
for(index=0;index
为了避免使用
实例
,让
图形
实现一种抽象的
绘图
方法。然后,覆盖
矩形
圆形
等类中的
绘制
。那你就可以了

for(index = 0;index < graphicObjects.size();index++){
    currentElement = graphicObjects.get(index);
    currentElement.draw();
}
for(index=0;index
为了避免使用
实例
,让
图形
实现一种抽象的
绘图
方法。然后,覆盖
矩形
圆形
等类中的
绘制
。那你就可以了

for(index = 0;index < graphicObjects.size();index++){
    currentElement = graphicObjects.get(index);
    currentElement.draw();
}
for(index=0;index
您得到一个错误,因为您试图说超类型图形是一个矩形,而不是一个矩形是一个图形


因此,请确保您在超级类型中有一个函数,并在子类型中覆盖它,这样您就不需要执行任何强制转换。

您会收到一个错误,因为您试图说超级类型图形是一个矩形,而不是矩形图形


因此,请确保您在超级类型中有一个函数,并在子类型中覆盖它,这样您就不需要执行任何强制转换。

您会收到一个错误,因为您试图说超级类型图形是一个矩形,而不是矩形图形


因此,请确保您在超级类型中有一个函数,并在子类型中覆盖它,这样您就不需要执行任何强制转换。

您会收到一个错误,因为您试图说超级类型图形是一个矩形,而不是矩形图形



因此,请确保在超级类型中有一个函数,并在子类型中覆盖它,这样就不需要进行任何强制转换。

错误是什么?为什么需要知道类型?虚拟方法和继承的要点是,您不需要知道类型。只需创建一个draw函数并在子类中重写它……一般来说,您应该遵循上面nneonneo和pathfinderelite answer建议的实践。但是为了解开这个谜团,如果您使用eclipse,请在这里查看投票率最高的答案:检查您的导入。很可能是导入了错误的矩形。错误是什么?为什么需要知道类型?虚拟方法和继承的要点是,您不需要知道类型。只需创建一个draw函数并在子类中重写它……一般来说,您应该遵循上面nneonneo和pathfinderelite answer建议的实践。但是为了解开这个谜团,如果您使用eclipse,请在这里查看投票率最高的答案:检查您的导入。很可能是导入了错误的矩形。错误是什么?为什么需要知道类型?虚拟方法和继承的要点是,您不需要知道类型。只需创建一个draw函数并在子类中重写它……一般来说,您应该遵循上面nneonneo和pathfinderelite answer建议的实践。但是为了解开这个谜团,如果您使用eclipse,请在这里查看投票率最高的答案:检查您的导入。很可能是导入了错误的矩形。错误是什么?为什么需要知道类型?虚拟方法和继承的要点是,您不需要知道类型。只需创建一个draw函数并在子类中重写它……一般来说,您应该遵循上面nneonneo和pathfinderelite answer建议的实践。但是为了解开这个谜团,如果您使用eclipse,请在这里查看投票率最高的答案:检查您的导入。很可能您导入了错误的矩形。此版本工作得最好,但没有按照我的需要解决我的问题。因为我不理解“扩展”:矩形从图形扩展而来,所以矩形是图形。如果我把它放在图形列表中,我应该检查它是否是一个矩形、圆环等等。。。也许我以后需要它。这个版本工作得最好,但没有像我需要的那样解决我的问题。因为我不理解“扩展”:矩形从图形扩展而来,所以矩形是图形。如果我把它放在图形列表中,我应该检查它是否是一个矩形、圆环等等。。。也许我以后需要它。这个版本工作得最好,但没有像我需要的那样解决我的问题。因为我不理解“扩展”:矩形从图形扩展而来,所以矩形是图形。如果我把它放在图形列表中,我应该检查它是否是一个矩形、圆环等等。。。也许我以后需要它。这个版本工作得最好,但没有像我需要的那样解决我的问题。因为我不理解“扩展”:矩形从图形扩展而来,所以矩形是图形。如果我把它放在图表列表中,我应该检查它