我有一个自定义QuadBatch
方法,顾名思义,批处理四边形,用一个openGL调用绘制。
我有两个对象,按如下方式创建:
QuadBatch sprite1 = new QuadBatch();
NewSprite sprite2 = new NewSprite();
这是QuadBatch
是父类的地方,而NewSprite
是它的子类(即,它扩展了QuadBatch
)。
我这样做是因为NewSprite
需要QuadBatch
课程中的所有内容,还需要一些额外的内容。
如果我有一个带有NewSprite
对象的animate方法,那么:
public void animate(NewSprite newSprite){
//animation code here
}
如何使用相同的方法但传入QuadBatch
对象?我不能只传入QuadBatch
对象,因为该方法需要一个NewSprite
对象。
如果animate()方法采用的参数是QuadBatch
对象,则反向应用相同的问题。我怎么能传递NewSprite
对象?
答案 0 :(得分:3)
您只需将您的方法作为参数...
public void animate(QuadBatch param) {
// animation code here
//if you need specific method calls you could cast the parameter here to a NewSprite
if (param instanceof NewSprite) {
NewSprite newSprite = (NewSprite)param;
//do NewSprite specific stuff here
}
}
//However, hopefully you have a method like doAnimate() on QuadBatch
//that you have overloaded in NewSprite
//and can just call it and get object specific results
public void animate(QuadBatch param) {
param.doAnimate();
}
答案 1 :(得分:1)
如果animate()方法不需要NewSprite对象上的任何调用但不需要QuadBatch对象上的调用,则只需将参数类型更改为QuadBatch。
public void animate(QuadBatch quadBatch) {
// animation code here
}
答案 2 :(得分:1)
1。How can I use this same method but passing in a QuadBatch object? I can't just pass in a QuadBatch object as the method expects a NewSprite object.
animate()
方法需要NewSprite
个对象,因此您无法将QuadBatch
对象传递给它,因为QuadBatch
不是NewSprite
类型。
2. The same question applies in reverse if the argument taken by the animate() method was a QuadBatch object. How could I pass in a NewSprite object?
您可以将NewSprite
个对象作为参数传递给animate(QuadBatch)
方法,因为NewSprite
是一种QuadBatch
(NewSprite
extends QuadBatch
)。
答案 3 :(得分:1)
将方法参数更改为QuadBatch对象
public void animate(QuadBatch quadBatch ){
//animation code here
}
您可以使用父类的引用创建子类的对象:
QuadBatch quadBatch = new NewSprite();