【发布时间】:2013-09-19 20:18:19
【问题描述】:
我有一个自定义的 QuadBatch 方法,顾名思义,它可以通过一次 openGL 调用来批量绘制四边形。
我有2个对象,创建如下:
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 对象?
【问题讨论】:
-
查看最近的帖子 - stackoverflow.com/q/18902307/1679863
-
如果方法有
QuadBatch参数没问题,可以传NewSprite。 -
为了扩展@SotiriosDelimanolis,接受类的方法也将接受任何子类。例如,采用 java.lang.Number 的方法将接受 java.lang.Double 或 java.lang.Integer 甚至 java.math.BigDecimal。这是多态性的一部分,也是面向对象编程的关键部分。
标签: java methods arguments extends subclassing