当前位置: 代码迷 >> java >> Android / java将子方法追加到父方法
  详细解决方案

Android / java将子方法追加到父方法

热度:90   发布时间:2023-07-27 09:32:36.0

我正在尝试创建一个Sprite父类,该子类使用其中的一些方法通过在移动到子方法之前返回null来滤除某些过时的条件。 我认为这在单一方法中使用时被称为“弹跳模式”,但找不到跨父/子对象扩展的任何示例。

下面是该代码的基本示例;

class parent ()
{
    public void update()
    {
         if (this.count<0)
         {
             return;
         }
         // do parent stuff
    }
}
class child extends parent ()
{
    public void update()
    {
         super.update()
         //do child stuff here
    }
}

当我运行子级更新方法时,我希望它运行父级方法,如果计数小于0,则停止对父级和子级内容的处理。

我发现的是,一旦计数少于0,父对象停止运行,而子对象继续运行。 就像两种更新方法都被视为单独的函数一样。

我相信我需要一种将子更新方法附加到子更新方法的方法。 我希望有一种简单的方法可以实现这一目标,但是只要我不必在每个子类中编写保镖/过滤器代码,就可以接受复杂的解决方案。

任何帮助深表感谢。

杰森

替代解决方案

建议的代码类parent(){public void update(){if(this.count <0){return; } //做父母的东西child_update()

  } child_update() { //place hold to be overridden by child } } class child extends parent () { @Override private void child_update() { //do child stuff here } } 

我认为这解决了我的问题,但还没有机会进行测试。 当我调用子对象更新方法时,应将其定向到父方法,该方法执行保镖检查/验证检查,并在适用的情况下运行已被子方法覆盖的子更新。子方法将设置为私有,因此它没有验证检查就无法调用。

我个人认为这是一个比提议的布尔型解决方案更干净的解决方案,但我想知道其他人的想法。

谢谢

杰森

除非您孩子的update()有阻止这种情况发生的条件,否则所有这些都可以按预期进行。 通过调用super.update()不能代替child的update() 它只是像调用其他任何方法一样调用它。 唯一的区别是您特别想调用孩子扩展的父母方法,因此是super. 但是一旦parentupdate()返回,则调用者的其余代码将被执行。

在执行方法代码时,应将update()更改为ie返回boolean ,然后使孩子的代码如下所示:

@Override
public boolean update() {
  if( super.update() ) {
       ...

     return true;
  }

  return false;
}

另请注意@Override使用(请参阅此处 )

您是否只是使method “ boolean”的return类型在子类中进行检查。

    class parent ()
    {
        public boolean update()
        {
             if (this.count<0)
             {
                 return false;
             }
             // do parent stuff
             return true; 
        }
    }
    class child extends parent ()
    {
        @Override
        public boolean update()
        {
             if( super.update() )
             {
                 // do child stuff
             }
            return true;    


  }
}
  相关解决方案