此问题是以下问题的扩展:Require override of method to call super
我希望我的超类的所有子类添加到 其父 update()
方法的实现。由于这在Java中是不可能的,因此这是我的选择:
public class MySuperClass{
public final void update{
// common updates for all classes implementing mySuperClass
updateSub0();
}
protected void updateSub0{
// method for next subclass to override
}
}
public class SubClass0 extends mySuperClass{
@Override
protected void updateSub0{
// common updates for all classes implementing subClass0
}
protected void updateSub1{
// method for next subclass to override
}
}
public class SubClass1 extends SubClass0{
@Override
protected void updateSub1{
// common updates for all classes implementing subClass1
}
protected void updateSub0{
// method for next subclass to override
}
}
...
这种方法会被认为是不合适的吗?如果是这样,你能解释一下吗?
任何其他建议也将不胜感激。
其他信息
由于我在寻求建议,我会尝试提供更多信息。基本上,我正在研究一个整个屏幕由平面(表面)组成的系统。现在,每种类型的平面都有一个位置,一个大小和一个目标位置(用于平滑重新定位),因此Plane
类(来自问题的mySuperClass
)将更新其{{1}中的位置方法。
对于可由用户按压的飞机,我会update
Plane
(问题PlanePressable
)。除了位置,大小和目标位置之外,SubClass0
还有一个偏移字段,用于存储有关按下的位置的信息。因此,除了更新位置之外,PlanePressable
还需要更新偏移量,因此需要PlanePressable
方法。
答案 0 :(得分:0)
您必须使用interitance和super
关键字,如下所示:
public class subClass0 extends mySuperClass {
@Override
protected void updateSub0{
super.update() // To call parent's update method
// common updates for all classes implementing subClass0
}
protected void updateSub1{
// method for next subclass to override
}
}